GetCollectionAccessor
,但有一种方法我可以用
EF Core
Entry
断开连接的实体中的方法:
var entry = _context.Entry(dbEntity);
entry.CurrentValues.SetValues(entry);
var disconnectedEntry = _context.Entry(entity); // new
foreach (var nav in navigations)
{
string propertyName = nav.GetPropertyAccess().Name;
var navigationChild = disconnectedEntry.Navigation(propertyName).CurrentValue; // new
}
记住,在每一个
进入
方法调用
将尝试检测变化。由于此实体不需要此验证,因此可以在禁用
AutoDetectChanges
作为
suggested in this issue
.
现在是问题02
Entity
到
ReferenceEntry
var referenceEntry = entry.Reference(propertyName);
await referenceEntry.LoadAsync();
var dbChild = (EntityBase)referenceEntry.CurrentValue;
if (dbChild == null)
{
referenceEntry.CurrentValue = navigationChild; // new
}
else
{
_DbCtx.Entry(dbChild).CurrentValues.SetValues(child);
}
我希望它能帮助你。如果有什么问题,请告诉我!
编辑
我也建议你读一下
TrackGraph method