本文整理汇总了C#中System.Data.Entity.Core.Metadata.Edm.AssociationType.AddReferentialConstraint方法的典型用法代码示例。如果您正苦于以下问题:C# AssociationType.AddReferentialConstraint方法的具体用法?C# AssociationType.AddReferentialConstraint怎么用?C# AssociationType.AddReferentialConstraint使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.Entity.Core.Metadata.Edm.AssociationType
的用法示例。
在下文中一共展示了AssociationType.AddReferentialConstraint方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ConvertToAssociationType
private static AssociationType ConvertToAssociationType(
Som.Relationship element,
DbProviderManifest providerManifest,
ConversionCache convertedItemCache,
Dictionary<Som.SchemaElement, GlobalItem> newGlobalItems)
{
Debug.Assert(element.RelationshipKind == RelationshipKind.Association);
var associationType = new AssociationType(
element.Name,
element.Namespace,
element.IsForeignKey,
GetDataSpace(providerManifest));
newGlobalItems.Add(element, associationType);
foreach (Som.RelationshipEnd end in element.Ends)
{
Som.SchemaType entityTypeElement = end.Type;
var endEntityType = (EntityType)LoadSchemaElement(
entityTypeElement,
providerManifest,
convertedItemCache,
newGlobalItems);
var endMember = InitializeAssociationEndMember(associationType, end, endEntityType);
AddOtherContent(end, endMember);
// Loop through and convert the operations
foreach (var operation in end.Operations)
{
// Process only the ones that we recognize
if (operation.Operation
!= Som.Operation.Delete)
{
continue;
}
// Determine the action for this operation
var action = OperationAction.None;
switch (operation.Action)
{
case Som.Action.Cascade:
action = OperationAction.Cascade;
break;
case Som.Action.None:
action = OperationAction.None;
break;
default:
Debug.Fail("Operation action not supported.");
break;
}
endMember.DeleteBehavior = action;
}
// Extract optional Documentation from the end element
if (end.Documentation != null)
{
endMember.Documentation = ConvertToDocumentation(end.Documentation);
}
}
Debug.Assert(associationType.ReferentialConstraints.Count == 0, "This must never have been initialized");
for (var i = 0; i < element.Constraints.Count; i++)
{
var constraint = element.Constraints[i];
var fromMember = (AssociationEndMember)associationType.Members[constraint.PrincipalRole.Name];
var toMember = (AssociationEndMember)associationType.Members[constraint.DependentRole.Name];
var fromEntityType = ((RefType)fromMember.TypeUsage.EdmType).ElementType;
var toEntityType = ((RefType)toMember.TypeUsage.EdmType).ElementType;
var referentialConstraint = new ReferentialConstraint(
fromMember, toMember,
GetProperties(fromEntityType, constraint.PrincipalRole.RoleProperties),
GetProperties(toEntityType, constraint.DependentRole.RoleProperties));
// Attach the optional Documentation
if (constraint.Documentation != null)
{
referentialConstraint.Documentation = ConvertToDocumentation(constraint.Documentation);
}
if (constraint.PrincipalRole.Documentation != null)
{
referentialConstraint.FromRole.Documentation = ConvertToDocumentation(constraint.PrincipalRole.Documentation);
}
if (constraint.DependentRole.Documentation != null)
{
referentialConstraint.ToRole.Documentation = ConvertToDocumentation(constraint.DependentRole.Documentation);
}
associationType.AddReferentialConstraint(referentialConstraint);
AddOtherContent(element.Constraints[i], referentialConstraint);
}
// Extract the optional Documentation
if (element.Documentation != null)
{
associationType.Documentation = ConvertToDocumentation(element.Documentation);
}
AddOtherContent(element, associationType);
//.........这里部分代码省略.........
示例2: Create
/// <summary>
/// Creates a read-only AssociationType instance from the specified parameters.
/// </summary>
/// <param name="name">The name of the association type.</param>
/// <param name="namespaceName">The namespace of the association type.</param>
/// <param name="foreignKey">Flag that indicates a foreign key (FK) relationship.</param>
/// <param name="dataSpace">The data space for the association type.</param>
/// <param name="sourceEnd">The source association end member.</param>
/// <param name="targetEnd">The target association end member.</param>
/// <param name="constraint">A referential constraint.</param>
/// <param name="metadataProperties">Metadata properties to be associated with the instance.</param>
/// <returns>The newly created AssociationType instance.</returns>
/// <exception cref="System.ArgumentException">The specified name is null or empty.</exception>
/// <exception cref="System.ArgumentException">The specified namespace is null or empty.</exception>
public static AssociationType Create(
string name,
string namespaceName,
bool foreignKey,
DataSpace dataSpace,
AssociationEndMember sourceEnd,
AssociationEndMember targetEnd,
ReferentialConstraint constraint,
IEnumerable<MetadataProperty> metadataProperties)
{
Check.NotEmpty(name, "name");
Check.NotEmpty(namespaceName, "namespaceName");
var instance = new AssociationType(name, namespaceName, foreignKey, dataSpace);
if (sourceEnd != null)
{
instance.SourceEnd = sourceEnd;
}
if (targetEnd != null)
{
instance.TargetEnd = targetEnd;
}
if (constraint != null)
{
instance.AddReferentialConstraint(constraint);
}
if (metadataProperties != null)
{
instance.AddMetadataProperties(metadataProperties.ToList());
}
instance.SetReadOnly();
return instance;
}