Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将EF6重构为EF核心_C#_Entity Framework_Entity Framework 6_Entity Framework Core - Fatal编程技术网

C# 将EF6重构为EF核心

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

我一直试图将一些EF6代码重构为EFCore1,但遇到了一个小绊脚石。我试图转换的代码如下:

一切都很好,但DbContextScope.cs尤其棘手,例如,此方法(为简洁起见进行了编辑):

问题

首先,我知道我可以用新的ChangeTracker替换ObjectContext.ObjectStateManager,但我希望确保正确获取我获得的条目

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();