本文整理汇总了C#中System.Data.Entity.Edm.EdmModel.AddComplexType方法的典型用法代码示例。如果您正苦于以下问题:C# EdmModel.AddComplexType方法的具体用法?C# EdmModel.AddComplexType怎么用?C# EdmModel.AddComplexType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.Entity.Edm.EdmModel
的用法示例。
在下文中一共展示了EdmModel.AddComplexType方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Configure_should_configure_active_entities_and_complex_types
public void Configure_should_configure_active_entities_and_complex_types()
{
var mockEntityType = new MockType();
var mockComplexType = new MockType();
var model = new EdmModel().Initialize();
var entityType = model.AddEntityType("E");
entityType.SetClrType(mockEntityType);
var complexType = model.AddComplexType("C");
complexType.SetClrType(mockComplexType);
var modelConfiguration = new ModelConfiguration();
var mockComplexTypeConfiguration = new Mock<ComplexTypeConfiguration>(mockComplexType.Object);
var mockEntityTypeConfiguration = new Mock<EntityTypeConfiguration>(mockEntityType.Object);
modelConfiguration.Add(mockComplexTypeConfiguration.Object);
modelConfiguration.Add(mockEntityTypeConfiguration.Object);
modelConfiguration.Configure(model);
mockComplexTypeConfiguration.Verify(c => c.Configure(complexType));
mockEntityTypeConfiguration.Verify(c => c.Configure(entityType, model));
}
示例2: GetComplexType_should_return_correct_type
public void GetComplexType_should_return_correct_type()
{
var model = new EdmModel().Initialize();
var complexType = model.AddComplexType("Foo");
var foundComplexType = model.GetComplexType("Foo");
Assert.NotNull(foundComplexType);
Assert.Same(complexType, foundComplexType);
}
示例3: GetStructuralType_should_return_entity_or_complex_type
public void GetStructuralType_should_return_entity_or_complex_type()
{
var model = new EdmModel().Initialize();
var entityType = model.AddEntityType("E");
var complexType = model.AddComplexType("C");
Assert.Same(entityType, model.GetStructuralType("E"));
Assert.Same(complexType, model.GetStructuralType("C"));
}
示例4: AddComplexType_should_create_and_add_to_default_namespace
public void AddComplexType_should_create_and_add_to_default_namespace()
{
var model = new EdmModel().Initialize();
var complexType = model.AddComplexType("Foo");
Assert.NotNull(complexType);
Assert.Equal("Foo", complexType.Name);
Assert.True(model.Namespaces.Single().ComplexTypes.Contains(complexType));
}
示例5: where
void IEdmConvention.Apply(EdmModel model)
{
// Query the model for candidate complex types.
// - The rules for complex type discovery are as follows:
// 1) The entity does not have a key or base type.
// 2) The entity does not have explicit configuration or has only structural type configuration.
// 3) The entity does not have any outbound navigation properties.
// The entity only has inbound associations where:
// 4) The association does not have a constraint defined.
// 5) The association does not have explicit configuration.
// 6) The association is not self-referencing.
// 7) The other end of the association is Optional.
// 8) Any inbound navigation properties do not have explicit configuration.
var candidates
= from entityType in model.GetEntityTypes()
where entityType.DeclaredKeyProperties.Count == 0 // (1)
&& entityType.BaseType == null
// (1)
let entityTypeConfiguration = entityType.GetConfiguration() as EntityTypeConfiguration
where ((entityTypeConfiguration == null) // (2)
|| (!entityTypeConfiguration.IsExplicitEntity
&& entityTypeConfiguration.IsStructuralConfigurationOnly)) // (2)
&& !entityType.NavigationProperties.Any()
// (3)
let matchingAssociations
= from associationType in model.GetAssociationTypes()
where associationType.SourceEnd.EntityType == entityType ||
associationType.TargetEnd.EntityType == entityType
let declaringEnd
= associationType.SourceEnd.EntityType == entityType
? associationType.SourceEnd
: associationType.TargetEnd
let declaringEntity
= associationType.GetOtherEnd(declaringEnd).EntityType
let navigationProperties
= declaringEntity.NavigationProperties
.Where(n => n.ResultEnd.EntityType == entityType)
select new
{
DeclaringEnd = declaringEnd,
AssociationType = associationType,
DeclaringEntityType = declaringEntity,
NavigationProperties = navigationProperties.ToList()
}
where matchingAssociations.All(
a => a.AssociationType.Constraint == null // (4)
&& a.AssociationType.GetConfiguration() == null // (5)
&& !a.AssociationType.IsSelfReferencing() // (6)
&& a.DeclaringEnd.IsOptional() // (7)
&& a.NavigationProperties.All(n => n.GetConfiguration() == null))
// (8)
select new
{
EntityType = entityType,
MatchingAssociations = matchingAssociations.ToList(),
};
// Transform candidate entities into complex types
foreach (var candidate in candidates.ToList())
{
var complexType = model.AddComplexType(candidate.EntityType.Name);
foreach (var property in candidate.EntityType.DeclaredProperties)
{
complexType.DeclaredProperties.Add(property);
}
foreach (var annotation in candidate.EntityType.Annotations)
{
complexType.Annotations.Add(annotation);
}
foreach (var association in candidate.MatchingAssociations)
{
foreach (var navigationProperty in association.NavigationProperties)
{
if (association.DeclaringEntityType.NavigationProperties.Contains(navigationProperty))
{
association.DeclaringEntityType.DeclaredNavigationProperties.Remove(navigationProperty);
var complexProperty =
association.DeclaringEntityType.AddComplexProperty(navigationProperty.Name, complexType);
foreach (var annotation in navigationProperty.Annotations)
{
complexProperty.Annotations.Add(annotation);
}
}
}
model.RemoveAssociationType(association.AssociationType);
}
model.RemoveEntityType(candidate.EntityType);
}
}