本文整理汇总了C#中IProperty.IsPrimaryKey方法的典型用法代码示例。如果您正苦于以下问题:C# IProperty.IsPrimaryKey方法的具体用法?C# IProperty.IsPrimaryKey怎么用?C# IProperty.IsPrimaryKey使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IProperty
的用法示例。
在下文中一共展示了IProperty.IsPrimaryKey方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PropertyMetadata
public PropertyMetadata(IProperty property, Type dbContextType)
{
Contract.Assert(property != null);
Contract.Assert(property.ClrType != null); //Do we need to make sure this is not called on Shadow properties?
PropertyName = property.Name;
TypeName = property.ClrType.FullName;
IsPrimaryKey = property.IsPrimaryKey();
// The old scaffolding has some logic for this property in an edge case which is
// not clear if needed any more; see EntityFrameworkColumnProvider.DetermineIsForeignKeyComponent
IsForeignKey = property.IsForeignKey();
IsEnum = property.ClrType.GetTypeInfo().IsEnum;
IsReadOnly = property.IsReadOnlyBeforeSave;
IsAutoGenerated = property.IsStoreGeneratedAlways;
ShortTypeName = TypeUtil.GetShortTypeName(property.ClrType);
Scaffold = true;
var reflectionProperty = property.DeclaringEntityType.ClrType.GetProperty(property.Name);
if (reflectionProperty != null)
{
var scaffoldAttr = reflectionProperty.GetCustomAttribute(typeof(ScaffoldColumnAttribute)) as ScaffoldColumnAttribute;
if (scaffoldAttr != null)
{
Scaffold = scaffoldAttr.Scaffold;
}
}
IsEnumFlags = false;
if (IsEnum)
{
var flagsAttr = property.ClrType.GetTypeInfo().GetCustomAttribute(typeof(FlagsAttribute)) as FlagsAttribute;
IsEnumFlags = (flagsAttr != null);
}
}
示例2: DetectKeyChange
private void DetectKeyChange(InternalEntityEntry entry, IProperty property, Sidecar snapshot)
{
if (!snapshot.HasValue(property))
{
return;
}
// TODO: Perf: make it fast to check if a property is part of any key
var isPrimaryKey = property.IsPrimaryKey();
var isPrincipalKey = _model.GetReferencingForeignKeys(property).Any();
var isForeignKey = property.IsForeignKey();
if (isPrimaryKey
|| isPrincipalKey
|| isForeignKey)
{
var snapshotValue = snapshot[property];
var currentValue = entry[property];
// Note that mutation of a byte[] key is not supported or detected, but two different instances
// of byte[] with the same content must be detected as equal.
if (!StructuralComparisons.StructuralEqualityComparer.Equals(currentValue, snapshotValue))
{
if (isForeignKey)
{
entry.StateManager.Notify.ForeignKeyPropertyChanged(entry, property, snapshotValue, currentValue);
}
if (isPrimaryKey)
{
entry.StateManager.UpdateIdentityMap(entry, snapshot.GetPrimaryKeyValue());
}
if (isPrincipalKey)
{
entry.StateManager.Notify.PrincipalKeyPropertyChanged(entry, property, snapshotValue, currentValue);
}
snapshot.TakeSnapshot(property);
}
}
}
示例3: DetectPrincipalKeyChange
private bool DetectPrincipalKeyChange(StateEntry entry, IProperty property)
{
// TODO: Perf: make it fast to check if a property is part of the primary key
var isPrimaryKey = property.IsPrimaryKey();
// TODO: Perf: make it faster to check if the property is at the principal end or not
var foreignKeys = _configuration.Model.GetReferencingForeignKeys(property).ToArray();
if (isPrimaryKey || foreignKeys.Length > 0)
{
var snapshotValue = entry.RelationshipsSnapshot[property];
var currentValue = entry[property];
if (!StructuralComparisons.StructuralEqualityComparer.Equals(currentValue, snapshotValue))
{
if (isPrimaryKey)
{
_configuration.StateManager.UpdateIdentityMap(entry, entry.RelationshipsSnapshot.GetPrimaryKeyValue());
}
_notifier.PrincipalKeyPropertyChanged(entry, property, snapshotValue, currentValue);
entry.RelationshipsSnapshot.TakeSnapshot(property);
return true;
}
}
return false;
}