本文整理汇总了C#中Microsoft.Data.Entity.ChangeTracking.Internal.InternalEntityEntry.GetDependentKeyValue方法的典型用法代码示例。如果您正苦于以下问题:C# InternalEntityEntry.GetDependentKeyValue方法的具体用法?C# InternalEntityEntry.GetDependentKeyValue怎么用?C# InternalEntityEntry.GetDependentKeyValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.Data.Entity.ChangeTracking.Internal.InternalEntityEntry
的用法示例。
在下文中一共展示了InternalEntityEntry.GetDependentKeyValue方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: 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);
}
}
}
}
}
示例2: UpdateDependentMap
public virtual void UpdateDependentMap(InternalEntityEntry entry, EntityKey oldKey, IForeignKey foreignKey)
{
if (entry.EntityState == EntityState.Detached)
{
return;
}
var newKey = entry.GetDependentKeyValue(foreignKey);
if (oldKey.Equals(newKey))
{
return;
}
Dictionary<EntityKey, HashSet<InternalEntityEntry>> fkMap;
if (_dependentsMap.TryGetValue(foreignKey, out fkMap))
{
HashSet<InternalEntityEntry> dependents;
if (oldKey != EntityKey.InvalidEntityKey
&& fkMap.TryGetValue(oldKey, out dependents))
{
dependents.Remove(entry);
if (dependents.Count == 0)
{
fkMap.Remove(oldKey);
}
}
if (newKey == EntityKey.InvalidEntityKey)
{
if (fkMap.Count == 0)
{
_dependentsMap.Remove(foreignKey);
}
}
else
{
if (!fkMap.TryGetValue(newKey, out dependents))
{
dependents = new HashSet<InternalEntityEntry>();
fkMap[newKey] = dependents;
}
dependents.Add(entry);
}
}
}
示例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);
}
}