C# 实体框架中的实体跟踪

C# 实体框架中的实体跟踪,c#,entity-framework,C#,Entity Framework,我开始读更多关于英孚的书。我认为,只要上下文在范围内,就可以跟踪实体。但是当我尝试下面的代码时,我得到了不同的结果。上下文已超出范围,但实体状态仍从未更改更改为已修改。我是否误解了我读到的内容?有人能解释一下吗 Destination canyon; DbEntityEntry<Destination> entry; using (var context = new BreakAwayContext()) { canyon = (from d in context.Dest

我开始读更多关于英孚的书。我认为,只要上下文在范围内,就可以跟踪实体。但是当我尝试下面的代码时,我得到了不同的结果。上下文已超出范围,但实体状态仍从未更改更改为已修改。我是否误解了我读到的内容?有人能解释一下吗

Destination canyon;
DbEntityEntry<Destination> entry;

using (var context = new BreakAwayContext())
{
    canyon = (from d in context.Destinations.Include(d => d.Lodgings)
                    where d.Name == "Grand Canyon"
                    select d).Single();
    entry = context.Entry<Destination>(canyon);
}

//Context gone out of scope
Console.WriteLine(entry.State); //Unchanged
canyon.TravelWarnings = "Carry enough water!";
Console.WriteLine(entry.State); //Modified
目的地峡谷;
DbEntityEntry;
使用(var context=new BreakAwayContext())
{
canyon=(从context.Destinations.Include中的d开始)(d=>d.lodings)
其中d.Name==“大峡谷”
选择d.Single();
entry=context.entry(峡谷);
}
//上下文超出了范围
Console.WriteLine(entry.State)//不变的
canyon.TravelWarnings=“携带足够的水!”;
Console.WriteLine(entry.State)//被改进的

我相信这个问题在较新版本的entity framework中得到了解决。认为这在版本5+中得到了解决。您必须继续使用4.3版吗?@P6345uk,我下载了一些使用4.3版的示例代码。我还在读EF!!!我会将此更新到版本6.1.3,因为较新版本解决了一些旧问题。如果您在visual studio中,可以通过package manager更新包完成此操作EntityFramework@P6345uk我升级到6.1.3,它的性能与预期一致。谢谢。我相信这个问题在较新版本的实体框架中得到了解决。认为这在版本5+中得到了解决。您必须继续使用4.3版吗?@P6345uk,我下载了一些使用4.3版的示例代码。我还在读EF!!!我会将此更新到版本6.1.3,因为较新版本解决了一些旧问题。如果您在visual studio中,可以通过package manager更新包完成此操作EntityFramework@P6345uk我升级到6.1.3,它的性能与预期一致。非常感谢。