C# 将EF6重构为EF核心
我一直试图将一些EF6代码重构为EFCore1,但遇到了一个小绊脚石。我试图转换的代码如下: 一切都很好,但DbContextScope.cs尤其棘手,例如,此方法(为简洁起见进行了编辑): 问题 首先,我知道我可以用新的ChangeTracker替换ObjectContext.ObjectStateManager,但我希望确保正确获取我获得的条目C# 将EF6重构为EF核心,c#,entity-framework,entity-framework-6,entity-framework-core,C#,Entity Framework,Entity Framework 6,Entity Framework Core,我一直试图将一些EF6代码重构为EFCore1,但遇到了一个小绊脚石。我试图转换的代码如下: 一切都很好,但DbContextScope.cs尤其棘手,例如,此方法(为简洁起见进行了编辑): 问题 首先,我知道我可以用新的ChangeTracker替换ObjectContext.ObjectStateManager,但我希望确保正确获取我获得的条目 contextInCurrentScope.ObjectContext.ObjectStateManager .TryGetObjectS
contextInCurrentScope.ObjectContext.ObjectStateManager
.TryGetObjectStateEntry(toRefresh, out stateInCurrentScope)
correspondingParentContext.ObjectContext.Refresh
第二,在EF Core中,这与什么是等价的
contextInCurrentScope.ObjectContext.ObjectStateManager
.TryGetObjectStateEntry(toRefresh, out stateInCurrentScope)
correspondingParentContext.ObjectContext.Refresh
谢谢
另外,在上述GitHub回购协议的源代码中有许多有用的评论。我认为获取实体条目以及实体密钥和状态的正确方法是:
var entry = contextInCurrentScope.Entry(toRefresh);
var keys = entry.Metadata.GetKeys();
var state = entry.State;
还可以使用以下条目从数据库中刷新单个实体:
entry.Reload();