本文整理汇总了C#中Microsoft.Data.Entity.ChangeTracking.Internal.InternalEntityEntry.GetPrincipalKeyValue方法的典型用法代码示例。如果您正苦于以下问题:C# InternalEntityEntry.GetPrincipalKeyValue方法的具体用法?C# InternalEntityEntry.GetPrincipalKeyValue怎么用?C# InternalEntityEntry.GetPrincipalKeyValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.Data.Entity.ChangeTracking.Internal.InternalEntityEntry
的用法示例。
在下文中一共展示了InternalEntityEntry.GetPrincipalKeyValue方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetDependents
public virtual IEnumerable<InternalEntityEntry> GetDependents(InternalEntityEntry principalEntry, IForeignKey foreignKey)
{
var keyValue = principalEntry.GetPrincipalKeyValue(foreignKey);
Dictionary<EntityKey, HashSet<InternalEntityEntry>> fkMap;
HashSet<InternalEntityEntry> dependents;
return keyValue != EntityKey.InvalidEntityKey
&& _dependentsMap.TryGetValue(foreignKey, out fkMap)
&& fkMap.TryGetValue(keyValue, out dependents)
? dependents
: Enumerable.Empty<InternalEntityEntry>();
}
示例2: GetKeyValueChecked
private EntityKey GetKeyValueChecked(IKey key, InternalEntityEntry entry)
{
var keyValue = entry.GetPrincipalKeyValue(key);
if (keyValue == EntityKey.InvalidEntityKey)
{
// TODO: Check message text here
throw new InvalidOperationException(CoreStrings.InvalidPrimaryKey(entry.EntityType.Name));
}
return keyValue;
}
示例3: AddToIdentityMap
private void AddToIdentityMap(IEntityType entityType, EntityKey entityKey, InternalEntityEntry newEntry)
{
_identityMap.Add(entityKey, newEntry);
foreach (var key in entityType.GetKeys().Where(k => k != entityKey.Key))
{
var principalKeyValue = newEntry.GetPrincipalKeyValue(key);
if (principalKeyValue != EntityKey.InvalidEntityKey)
{
_identityMap[principalKeyValue] = newEntry;
}
}
foreach (var foreignKey in entityType.GetForeignKeys())
{
var dependentKey = newEntry.GetDependentKeyValue(foreignKey);
if (dependentKey == EntityKey.InvalidEntityKey)
{
continue;
}
Dictionary<EntityKey, HashSet<InternalEntityEntry>> fkMap;
if (!_dependentsMap.TryGetValue(foreignKey, out fkMap))
{
fkMap = new Dictionary<EntityKey, HashSet<InternalEntityEntry>>();
_dependentsMap[foreignKey] = fkMap;
}
HashSet<InternalEntityEntry> dependents;
if (!fkMap.TryGetValue(dependentKey, out dependents))
{
dependents = new HashSet<InternalEntityEntry>();
fkMap[dependentKey] = dependents;
}
dependents.Add(newEntry);
}
}
示例4: StopTracking
public virtual void StopTracking(InternalEntityEntry entry)
{
var mapKey = entry.Entity ?? entry;
_entityReferenceMap.Remove(mapKey);
_detachedEntityReferenceMap[mapKey] = new WeakReference<InternalEntityEntry>(entry);
foreach (var key in entry.EntityType.GetKeys())
{
var keyValue = entry.GetPrincipalKeyValue(key);
InternalEntityEntry existingEntry;
if (_identityMap.TryGetValue(keyValue, out existingEntry)
&& existingEntry == entry)
{
_identityMap.Remove(keyValue);
}
}
foreach (var foreignKey in entry.EntityType.GetForeignKeys())
{
var dependentKey = entry.GetDependentKeyValue(foreignKey);
Dictionary<EntityKey, HashSet<InternalEntityEntry>> fkMap;
HashSet<InternalEntityEntry> dependents;
if (dependentKey != EntityKey.InvalidEntityKey
&& _dependentsMap.TryGetValue(foreignKey, out fkMap)
&& fkMap.TryGetValue(dependentKey, out dependents))
{
dependents.Remove(entry);
if (dependents.Count == 0)
{
fkMap.Remove(dependentKey);
if (fkMap.Count == 0)
{
_dependentsMap.Remove(foreignKey);
}
}
}
}
}
示例5: GetDependents
public virtual IEnumerable<InternalEntityEntry> GetDependents(InternalEntityEntry principalEntry, IForeignKey foreignKey)
{
var principalKeyValue = principalEntry.GetPrincipalKeyValue(foreignKey);
// TODO: Perf: Add additional indexes so that this isn't a linear lookup
return principalKeyValue == EntityKey.InvalidEntityKey
? Enumerable.Empty<InternalEntityEntry>()
: Entries.Where(
e => e.EntityType == foreignKey.EntityType
&& principalKeyValue.Equals(e.GetDependentKeyValue(foreignKey)));
}