本文整理汇总了C#中System.Web.OData.Formatter.Deserialization.ODataEntityDeserializer.ReadEntry方法的典型用法代码示例。如果您正苦于以下问题:C# ODataEntityDeserializer.ReadEntry方法的具体用法?C# ODataEntityDeserializer.ReadEntry怎么用?C# ODataEntityDeserializer.ReadEntry使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Web.OData.Formatter.Deserialization.ODataEntityDeserializer
的用法示例。
在下文中一共展示了ODataEntityDeserializer.ReadEntry方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadEntry_CanReadDynamicPropertiesForInheritanceOpenEntityType
public void ReadEntry_CanReadDynamicPropertiesForInheritanceOpenEntityType()
{
// Arrange
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntityType<SimpleOpenCustomer>();
builder.EnumType<SimpleEnum>();
IEdmModel model = builder.GetEdmModel();
IEdmEntityTypeReference vipCustomerTypeReference = model.GetEdmTypeReference(typeof(SimpleVipCustomer)).AsEntity();
var deserializerProvider = new DefaultODataDeserializerProvider();
var deserializer = new ODataEntityDeserializer(deserializerProvider);
ODataEntry odataEntry = new ODataEntry
{
Properties = new[]
{
// declared properties
new ODataProperty { Name = "CustomerId", Value = 121 },
new ODataProperty { Name = "Name", Value = "VipName #121" },
new ODataProperty { Name = "VipNum", Value = "Vip Num 001" },
// dynamic properties
new ODataProperty { Name = "GuidProperty", Value = new Guid("181D3A20-B41A-489F-9F15-F91F0F6C9ECA") },
},
TypeName = typeof(SimpleVipCustomer).FullName
};
ODataDeserializerContext readContext = new ODataDeserializerContext()
{
Model = model
};
ODataEntryWithNavigationLinks entry = new ODataEntryWithNavigationLinks(odataEntry);
// Act
SimpleVipCustomer customer = deserializer.ReadEntry(entry, vipCustomerTypeReference, readContext)
as SimpleVipCustomer;
// Assert
Assert.NotNull(customer);
// Verify the declared properties
Assert.Equal(121, customer.CustomerId);
Assert.Equal("VipName #121", customer.Name);
Assert.Equal("Vip Num 001", customer.VipNum);
// Verify the dynamic properties
Assert.NotNull(customer.CustomerProperties);
Assert.Equal(1, customer.CustomerProperties.Count());
Assert.Equal(new Guid("181D3A20-B41A-489F-9F15-F91F0F6C9ECA"), customer.CustomerProperties["GuidProperty"]);
}
示例2: ReadEntry_CanReadDatTimeRelatedProperties
public void ReadEntry_CanReadDatTimeRelatedProperties()
{
// Arrange
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntityType<MyCustomer>().Namespace = "NS";
IEdmModel model = builder.GetEdmModel();
IEdmEntityTypeReference vipCustomerTypeReference = model.GetEdmTypeReference(typeof(MyCustomer)).AsEntity();
var deserializerProvider = new DefaultODataDeserializerProvider();
var deserializer = new ODataEntityDeserializer(deserializerProvider);
ODataEntry odataEntry = new ODataEntry
{
Properties = new[]
{
new ODataProperty { Name = "Id", Value = 121 },
new ODataProperty { Name = "Birthday", Value = new Date(2015, 12, 12) },
new ODataProperty { Name = "ReleaseTime", Value = new TimeOfDay(1, 2, 3, 4) },
},
TypeName = "NS.MyCustomer"
};
ODataDeserializerContext readContext = new ODataDeserializerContext { Model = model };
ODataEntryWithNavigationLinks entry = new ODataEntryWithNavigationLinks(odataEntry);
// Act
var customer = deserializer.ReadEntry(entry, vipCustomerTypeReference, readContext) as MyCustomer;
// Assert
Assert.NotNull(customer);
Assert.Equal(121, customer.Id);
Assert.Equal(new DateTime(2015, 12, 12), customer.Birthday);
Assert.Equal(new TimeSpan(0, 1, 2, 3, 4), customer.ReleaseTime);
}
示例3: ReadEntry_SetsExpectedAndActualEdmType_OnCreatedEdmObject_TypelessMode
public void ReadEntry_SetsExpectedAndActualEdmType_OnCreatedEdmObject_TypelessMode()
{
// Arrange
CustomersModelWithInheritance model = new CustomersModelWithInheritance();
IEdmEntityTypeReference customerType = EdmLibHelpers.ToEdmTypeReference(model.Customer, isNullable: false).AsEntity();
ODataDeserializerContext readContext = new ODataDeserializerContext { Model = model.Model, ResourceType = typeof(IEdmObject) };
ODataEntryWithNavigationLinks entry = new ODataEntryWithNavigationLinks(new ODataEntry
{
TypeName = model.SpecialCustomer.FullName(),
Properties = new ODataProperty[0]
});
ODataEntityDeserializer deserializer = new ODataEntityDeserializer(_deserializerProvider);
// Act
var result = deserializer.ReadEntry(entry, customerType, readContext);
// Assert
EdmEntityObject resource = Assert.IsType<EdmEntityObject>(result);
Assert.Equal(model.SpecialCustomer, resource.ActualEdmType);
Assert.Equal(model.Customer, resource.ExpectedEdmType);
}
示例4: ReadEntry_CanReadDynamicPropertiesForOpenEntityType
public void ReadEntry_CanReadDynamicPropertiesForOpenEntityType()
{
// Arrange
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntityType<SimpleOpenCustomer>();
builder.EnumType<SimpleEnum>();
IEdmModel model = builder.GetEdmModel();
IEdmEntityTypeReference customerTypeReference = model.GetEdmTypeReference(typeof(SimpleOpenCustomer)).AsEntity();
var deserializerProvider = new DefaultODataDeserializerProvider();
var deserializer = new ODataEntityDeserializer(deserializerProvider);
ODataEnumValue enumValue = new ODataEnumValue("Third", typeof(SimpleEnum).FullName);
ODataComplexValue[] complexValues =
{
new ODataComplexValue
{
TypeName = typeof(SimpleOpenAddress).FullName,
Properties = new[]
{
// declared properties
new ODataProperty { Name = "Street", Value = "Street 1" },
new ODataProperty { Name = "City", Value = "City 1" },
// dynamic properties
new ODataProperty
{
Name = "DateTimeProperty",
Value = new DateTimeOffset(new DateTime(2014, 5, 6))
}
}
},
new ODataComplexValue
{
TypeName = typeof(SimpleOpenAddress).FullName,
Properties = new[]
{
// declared properties
new ODataProperty { Name = "Street", Value = "Street 2" },
new ODataProperty { Name = "City", Value = "City 2" },
// dynamic properties
new ODataProperty
{
Name = "ArrayProperty",
Value = new ODataCollectionValue { TypeName = "Collection(Edm.Int32)", Items = new[] {1, 2, 3, 4} }
}
}
}
};
ODataCollectionValue collectionValue = new ODataCollectionValue
{
TypeName = "Collection(" + typeof(SimpleOpenAddress).FullName + ")",
Items = complexValues
};
ODataEntry odataEntry = new ODataEntry
{
Properties = new[]
{
// declared properties
new ODataProperty { Name = "CustomerId", Value = 991 },
new ODataProperty { Name = "Name", Value = "Name #991" },
// dynamic properties
new ODataProperty { Name = "GuidProperty", Value = new Guid("181D3A20-B41A-489F-9F15-F91F0F6C9ECA") },
new ODataProperty { Name = "EnumValue", Value = enumValue },
new ODataProperty { Name = "CollectionProperty", Value = collectionValue }
},
TypeName = typeof(SimpleOpenCustomer).FullName
};
ODataDeserializerContext readContext = new ODataDeserializerContext()
{
Model = model
};
ODataEntryWithNavigationLinks entry = new ODataEntryWithNavigationLinks(odataEntry);
// Act
SimpleOpenCustomer customer = deserializer.ReadEntry(entry, customerTypeReference, readContext)
as SimpleOpenCustomer;
// Assert
Assert.NotNull(customer);
// Verify the declared properties
Assert.Equal(991, customer.CustomerId);
Assert.Equal("Name #991", customer.Name);
// Verify the dynamic properties
Assert.NotNull(customer.CustomerProperties);
Assert.Equal(3, customer.CustomerProperties.Count());
Assert.Equal(new Guid("181D3A20-B41A-489F-9F15-F91F0F6C9ECA"), customer.CustomerProperties["GuidProperty"]);
Assert.Equal(SimpleEnum.Third, customer.CustomerProperties["EnumValue"]);
// Verify the dynamic collection property
//.........这里部分代码省略.........
示例5: ReadEntry_ThrowsSerializationException_TypeCannotBeDeserialized
public void ReadEntry_ThrowsSerializationException_TypeCannotBeDeserialized()
{
Mock<ODataDeserializerProvider> deserializerProvider = new Mock<ODataDeserializerProvider>();
deserializerProvider.Setup(d => d.GetEdmTypeDeserializer(It.IsAny<IEdmTypeReference>())).Returns<ODataEdmTypeDeserializer>(null);
var deserializer = new ODataEntityDeserializer(deserializerProvider.Object);
ODataEntryWithNavigationLinks entry = new ODataEntryWithNavigationLinks(new ODataEntry { TypeName = _supplierEdmType.FullName() });
Assert.Throws<SerializationException>(
() => deserializer.ReadEntry(entry, _productEdmType, _readContext),
"'ODataDemo.Supplier' cannot be deserialized using the ODataMediaTypeFormatter.");
}
示例6: ReadEntry_DispatchesToRightDeserializer_IfEntityTypeNameIsDifferent
public void ReadEntry_DispatchesToRightDeserializer_IfEntityTypeNameIsDifferent()
{
// Arrange
Mock<ODataEdmTypeDeserializer> supplierDeserializer = new Mock<ODataEdmTypeDeserializer>(ODataPayloadKind.Entry);
Mock<ODataDeserializerProvider> deserializerProvider = new Mock<ODataDeserializerProvider>();
var deserializer = new ODataEntityDeserializer(deserializerProvider.Object);
ODataEntryWithNavigationLinks entry = new ODataEntryWithNavigationLinks(new ODataEntry { TypeName = _supplierEdmType.FullName() });
deserializerProvider.Setup(d => d.GetEdmTypeDeserializer(It.IsAny<IEdmTypeReference>())).Returns(supplierDeserializer.Object);
supplierDeserializer
.Setup(d => d.ReadInline(entry, It.Is<IEdmTypeReference>(e => _supplierEdmType.Definition == e.Definition), _readContext))
.Returns(42).Verifiable();
// Act
object result = deserializer.ReadEntry(entry, _productEdmType, _readContext);
// Assert
supplierDeserializer.Verify();
Assert.Equal(42, result);
}
示例7: ReadEntry_ThrowsODataException_CannotInstantiateAbstractEntityType
public void ReadEntry_ThrowsODataException_CannotInstantiateAbstractEntityType()
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntityType<BaseType>().Abstract();
IEdmModel model = builder.GetEdmModel();
var deserializer = new ODataEntityDeserializer(_deserializerProvider);
ODataEntryWithNavigationLinks entry = new ODataEntryWithNavigationLinks(new ODataEntry { TypeName = "System.Web.OData.Formatter.Deserialization.BaseType" });
Assert.Throws<ODataException>(
() => deserializer.ReadEntry(entry, _productEdmType, new ODataDeserializerContext { Model = model }),
"An instance of the abstract entity type 'System.Web.OData.Formatter.Deserialization.BaseType' was found. Abstract entity types cannot be instantiated.");
}
示例8: ReadEntry_ThrowsODataException_EntityTypeNotInModel
public void ReadEntry_ThrowsODataException_EntityTypeNotInModel()
{
var deserializer = new ODataEntityDeserializer(_deserializerProvider);
ODataEntryWithNavigationLinks entry = new ODataEntryWithNavigationLinks(new ODataEntry { TypeName = "MissingType" });
Assert.Throws<ODataException>(
() => deserializer.ReadEntry(entry, _productEdmType, _readContext),
"Cannot find the entity type 'MissingType' in the model.");
}
示例9: ReadEntry_ThrowsArgument_ModelMissingFromReadContext
public void ReadEntry_ThrowsArgument_ModelMissingFromReadContext()
{
var deserializer = new ODataEntityDeserializer(_deserializerProvider);
ODataEntryWithNavigationLinks entry = new ODataEntryWithNavigationLinks(new ODataEntry { TypeName = _supplierEdmType.FullName() });
Assert.ThrowsArgument(
() => deserializer.ReadEntry(entry, _productEdmType, new ODataDeserializerContext()),
"readContext",
"The EDM model is missing on the read context. The model is required on the read context to deserialize the payload.");
}
示例10: ReadEntry_ThrowsArgumentNull_ReadContext
public void ReadEntry_ThrowsArgumentNull_ReadContext()
{
var deserializer = new ODataEntityDeserializer(_deserializerProvider);
ODataEntryWithNavigationLinks entry = new ODataEntryWithNavigationLinks(new ODataEntry());
Assert.ThrowsArgumentNull(
() => deserializer.ReadEntry(entry, entityType: _productEdmType, readContext: null),
"readContext");
}
示例11: ReadEntry_ThrowsArgumentNull_EntryWrapper
public void ReadEntry_ThrowsArgumentNull_EntryWrapper()
{
var deserializer = new ODataEntityDeserializer(_deserializerProvider);
Assert.ThrowsArgumentNull(
() => deserializer.ReadEntry(entryWrapper: null, entityType: _productEdmType, readContext: _readContext),
"entryWrapper");
}