Quantcast
Channel: ASPNETWebStack Issue Tracker Rss Feed
Viewing all articles
Browse latest Browse all 7215

Created Issue: Required navigation property has ZeroOrOne multiplicity on edm model [560]

$
0
0
Here is the test code:
[DataContract]
public class SimpleDataContractModel
{
[Key]
[DataMember]
public int KeyProperty { get; set; }

[DataMember]
public string Name { get; set; }

[Required]
[DataMember]
public string RequiredAttribute { get; set; }

[DataMember(IsRequired = true)]
public string RequiredProperty2 { get; set; }

public string NotDataMember { get; set; }

[DataMember(IsRequired = true)]
public IgnoreMemberModel NavigationProperty1 { get; set; }

public IgnoreMemberModel NavigationProperty2 { get; set; }
}

public class IgnoreMemberModel
{
public int ID { get; set; }
public string Name { get; set; }
[NotMapped]
public string IgnoreProperty1 { get; set; }
[IgnoreDataMember]
public string IgnoreProperty2 { get; set; }
}

public class AttributeConventionModelBuilderTests
{
[Fact]
public void TestSimpleDataContractModel()
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet<SimpleDataContractModel>("SimpleDataContractModels");
var model = builder.GetEdmModel();

var simpleDataContractModel = model.SchemaElements.OfType<IEdmEntityType>().First(t => t.Name == typeof(SimpleDataContractModel).Name);
Assert.Equal(5, simpleDataContractModel.Properties().Count());

Assert.Equal("KeyProperty", simpleDataContractModel.Key().Single().Name);

var requiredProperty2 = simpleDataContractModel.Properties().Single(p => p.Name == "RequiredProperty2") as EdmProperty;

Assert.Equal(false, requiredProperty2.Type.IsNullable);

var navigationProperty1 = simpleDataContractModel.Properties().Single(p => p.Name == "NavigationProperty1") as EdmNavigationProperty;
Assert.Equal(EdmMultiplicity.One, navigationProperty1.Multiplicity());
}
}

The last Assert fails because the property's multiplicity is ZeroOrOne, which means it's optional.

Viewing all articles
Browse latest Browse all 7215

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>