背景:使用EntityFramework 6我正在创建一个存储库,它在内存中保存所有实体,这是出于性能原因,所以我需要在SaveChange之后更新我的“存储库缓存”
public class Person
{
public decimal Incomes{get; set;}
public Dependent Related {get; set;}
}
public class Dependent
{
...
}
这是我如何加载到内存静态字段
var x= _set.Include(d => d.Related)
.ToList();
_memCache.AddRange(x);
在SaveChanges之前我保留ChangeTrack的信息
private void BeforeCommit(DbChangeTracker tracker)
{
foreach (var track in tracker.Entries<Person>())
{
switch (track.State)
{
case EntityState.Added:
_toAdd.Add(track);
break;
case EntityState.Deleted:
_toDelete.Add(track.Entity.Id);
break;
case EntityState.Modified:
_toModify.Add(track);
break;
}
}
}
这是我在重新加载DbEntityEntry后处理新实体的问题track.Entity的“Related”属性为null因为我找不到指定Include的方法(m =&gt; m.Related)式
foreach (var track in _toAdd)
{
await track.ReloadAsync();
_memCache.Add(track.Entity);
}