本文整理汇总了C#中System.Data.Entity.Core.Metadata.Edm.EntityType.AddNavigationProperty方法的典型用法代码示例。如果您正苦于以下问题:C# EntityType.AddNavigationProperty方法的具体用法?C# EntityType.AddNavigationProperty怎么用?C# EntityType.AddNavigationProperty使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.Entity.Core.Metadata.Edm.EntityType
的用法示例。
在下文中一共展示了EntityType.AddNavigationProperty方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Map
public void Map(
PropertyInfo propertyInfo, EntityType entityType, Func<EntityTypeConfiguration> entityTypeConfiguration)
{
DebugCheck.NotNull(propertyInfo);
DebugCheck.NotNull(entityType);
DebugCheck.NotNull(entityTypeConfiguration);
var targetType = propertyInfo.PropertyType;
var targetAssociationEndKind = RelationshipMultiplicity.ZeroOrOne;
if (targetType.IsCollection(out targetType))
{
targetAssociationEndKind = RelationshipMultiplicity.Many;
}
var targetEntityType = _typeMapper.MapEntityType(targetType);
if (targetEntityType != null)
{
var sourceAssociationEndKind
= targetAssociationEndKind.IsMany()
? RelationshipMultiplicity.ZeroOrOne
: RelationshipMultiplicity.Many;
var associationType
= _typeMapper.MappingContext.Model.AddAssociationType(
entityType.Name + "_" + propertyInfo.Name,
entityType,
sourceAssociationEndKind,
targetEntityType,
targetAssociationEndKind,
_typeMapper.MappingContext.ModelConfiguration.ModelNamespace);
associationType.SourceEnd.SetClrPropertyInfo(propertyInfo);
_typeMapper.MappingContext.Model.AddAssociationSet(associationType.Name, associationType);
var navigationProperty
= entityType.AddNavigationProperty(propertyInfo.Name, associationType);
navigationProperty.SetClrPropertyInfo(propertyInfo);
_typeMapper.MappingContext.ConventionsConfiguration.ApplyPropertyConfiguration(
propertyInfo,
() => entityTypeConfiguration().Navigation(propertyInfo),
_typeMapper.MappingContext.ModelConfiguration);
new AttributeMapper(_typeMapper.MappingContext.AttributeProvider)
.Map(propertyInfo, navigationProperty.Annotations);
}
}
示例2: Adding_a_NavigationProperty_to_an_EntityType_can_be_forced_when_read_only
public static void Adding_a_NavigationProperty_to_an_EntityType_can_be_forced_when_read_only()
{
var typeUsage = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
var associationType = new AssociationType("AssociationType", "Namespace", true, DataSpace.CSpace);
var source = new EntityType("Source", "Namespace", DataSpace.CSpace);
var target = new EntityType("Target", "Namespace", DataSpace.CSpace);
var sourceEnd = new AssociationEndMember("SourceEnd", source);
var targetEnd = new AssociationEndMember("TargetEnd", target);
var navigationProperty =
NavigationProperty.Create(
"NavigationProperty",
typeUsage,
associationType,
sourceEnd,
targetEnd);
source.SetReadOnly();
Assert.True(source.IsReadOnly);
Assert.Equal(
Resources.Strings.OperationOnReadOnlyItem,
Assert.Throws<InvalidOperationException>(
() => source.AddMember(navigationProperty)).Message);
Assert.Equal(0, source.Members.Count);
source.AddNavigationProperty(navigationProperty);
Assert.True(source.IsReadOnly);
Assert.Equal(1, source.Members.Count);
Assert.Same(navigationProperty, source.Members[0]);
Assert.Equal(
Resources.Strings.OperationOnReadOnlyItem,
Assert.Throws<InvalidOperationException>(
() => source.AddMember(navigationProperty)).Message);
}
示例3: CreateModelFixture
private static EdmModel CreateModelFixture(
out EntityType declaringEntityType, out EntityType complexEntityType)
{
var model = new EdmModel(DataSpace.CSpace);
declaringEntityType = model.AddEntityType("E");
complexEntityType = model.AddEntityType("C");
var property = EdmProperty.CreatePrimitive("P", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
complexEntityType.AddMember(property);
var associationType
= model.AddAssociationType(
"A",
declaringEntityType, RelationshipMultiplicity.Many,
complexEntityType, RelationshipMultiplicity.ZeroOrOne);
declaringEntityType.AddNavigationProperty("E.C", associationType);
return model;
}
示例4: AddNavigationProperty_should_create_and_add_navigation_property
public void AddNavigationProperty_should_create_and_add_navigation_property()
{
var entityType = new EntityType("E", "N", DataSpace.CSpace);
var associationType
= new AssociationType("A", XmlConstants.ModelNamespace_3, false, DataSpace.CSpace)
{
SourceEnd = new AssociationEndMember("S", new EntityType("E", "N", DataSpace.CSpace)),
TargetEnd = new AssociationEndMember("T", new EntityType("E", "N", DataSpace.CSpace).GetReferenceType(), RelationshipMultiplicity.Many)
};
var navigationProperty = entityType.AddNavigationProperty("N", associationType);
Assert.NotNull(navigationProperty);
Assert.Equal("N", navigationProperty.Name);
Assert.Same(associationType, navigationProperty.Association);
Assert.Equal(BuiltInTypeKind.CollectionType, navigationProperty.TypeUsage.EdmType.BuiltInTypeKind);
Assert.Same(associationType.SourceEnd, navigationProperty.FromEndMember);
Assert.Same(associationType.TargetEnd, navigationProperty.ToEndMember);
Assert.True(entityType.NavigationProperties.Contains(navigationProperty));
}
示例5: GetNavigationProperty_should_return_correct_property
public void GetNavigationProperty_should_return_correct_property()
{
var entityType = new EntityType("E", "N", DataSpace.CSpace);
var associationType = new AssociationType("A", XmlConstants.ModelNamespace_3, false, DataSpace.CSpace);
associationType.SourceEnd = new AssociationEndMember("S", new EntityType("E", "N", DataSpace.CSpace));
associationType.TargetEnd = new AssociationEndMember("T", new EntityType("E", "N", DataSpace.CSpace));
var property = entityType.AddNavigationProperty("Foo", associationType);
var foundProperty = entityType.NavigationProperties.SingleOrDefault(np => np.Name == "Foo");
Assert.NotNull(foundProperty);
Assert.Same(property, foundProperty);
}
示例6: Configure_should_ensure_consistency_of_principality_when_already_configured
public void Configure_should_ensure_consistency_of_principality_when_already_configured()
{
var associationType = new AssociationType("A", XmlConstants.ModelNamespace_3, false, DataSpace.CSpace);
var sourceEntityType = new EntityType("SE", "N", DataSpace.CSpace);
associationType.SourceEnd = new AssociationEndMember("S", sourceEntityType);
var targetEntityType = new EntityType("TE", "N", DataSpace.CSpace);
associationType.TargetEnd = new AssociationEndMember("T", targetEntityType);
var navPropertyInfoA = new MockPropertyInfo(typeof(AType1), "N1");
var navigationPropertyConfigurationA = new NavigationPropertyConfiguration(navPropertyInfoA);
associationType.SetConfiguration(navigationPropertyConfigurationA);
var navPropertyA = new NavigationProperty("N1", TypeUsage.Create(targetEntityType));
navPropertyA.SetClrPropertyInfo(navPropertyInfoA);
navPropertyA.RelationshipType = associationType;
navPropertyA.ToEndMember = associationType.TargetEnd;
navPropertyA.FromEndMember = associationType.SourceEnd;
sourceEntityType.AddNavigationProperty(navPropertyA);
var navPropertyInfoB = new MockPropertyInfo(typeof(AType1), "N2");
var navigationPropertyConfigurationB
= new NavigationPropertyConfiguration(navPropertyInfoB)
{
IsNavigationPropertyDeclaringTypePrincipal = false
};
var navPropertyB = new NavigationProperty("N2", TypeUsage.Create(sourceEntityType));
navPropertyB.SetClrPropertyInfo(navPropertyInfoB);
navPropertyB.RelationshipType = associationType;
navPropertyB.ToEndMember = associationType.SourceEnd;
navPropertyB.FromEndMember = associationType.TargetEnd;
targetEntityType.AddNavigationProperty(navPropertyB);
var model = new EdmModel(DataSpace.CSpace);
model.AddItem(sourceEntityType);
model.AddItem(targetEntityType);
navigationPropertyConfigurationB.Configure(
new NavigationProperty("N", TypeUsage.Create(associationType.TargetEnd.GetEntityType()))
{
RelationshipType = associationType
},
model, new EntityTypeConfiguration(typeof(object)));
Assert.Equal(true, navigationPropertyConfigurationA.IsNavigationPropertyDeclaringTypePrincipal);
}