C# 实体框架中的上下文缺少AsNoTracking()方法

C# 实体框架中的上下文缺少AsNoTracking()方法,c#,winforms,entity-framework,C#,Winforms,Entity Framework,我需要使用EntityFramework4.0将整个表加载到内存中。在过去的两个小时里,我一直在阅读有关AsNoTracking()方法的文章,该方法应该可以实现这一点,但我无法理解为什么该方法在我的dataContext上不可用。根据我读到的所有内容,我只需要对System.Data.Entity的引用。然后,我应该能够在加载对象时使用AsNoTracking()方法。我是不是错过了一些简单的东西?该方法在EF 4.0中不可用吗?然而,下面是我的代码中的一个查询 // Working Quer

我需要使用EntityFramework4.0将整个表加载到内存中。在过去的两个小时里,我一直在阅读有关AsNoTracking()方法的文章,该方法应该可以实现这一点,但我无法理解为什么该方法在我的dataContext上不可用。根据我读到的所有内容,我只需要对System.Data.Entity的引用。然后,我应该能够在加载对象时使用AsNoTracking()方法。我是不是错过了一些简单的东西?该方法在EF 4.0中不可用吗?然而,下面是我的代码中的一个查询

// Working Query
var items = dbContext.Items.ToList()

// Does NOT Work (Compiler does not recognize AsNoTrackingMethod() )
var items = dbContext.Items.AsNoTracking().ToList()
是实体框架4.1中添加的扩展方法(作为返回非缓存结果的能力)。这就是为什么实体框架4.0中没有它。如果可能的话,我建议您升级Entity Framework的版本(顺便说一句,当前版本是6.0)。

AsNoTracking()是DbExtensions()/QueryableExtensions()类中的一个扩展方法,它是System.Data.Entity命名空间的一部分。实体框架4.1+中没有缺少它。您只需要记住为该名称空间添加一个using指令

using System.Data.Entity;

如果使用.NET核心使用指令中的EF:

using Microsoft.EntityFrameworkCore;

根据,EF 4.1中提供了
AsNoTracking()
。它仍然比4.0更新,所以OP可能无法使用,但它似乎没有添加到EF5中。谢谢Sergey。我看看我们是否能更新。而且,我会尽快接受你的回答。MSDN在EF5之前可能根本没有EF文档吗?(诚实的问题,我不确定。)@hvd是的,你是对的-这个方法是在4.1版本中添加的,因为文章声明了一个新的扩展方法,因为Notracking允许任何查询以这种方式运行只是出于好奇,你们知道是否有其他方法可以使用EF4.0加载一堆对象,这些对象可以直接连接到不同的上下文进行插入吗?我基本上需要使用一个上下文在一个db中加载一个表,然后右转并使用另一个dbContext将记录插入另一个数据库表中。引用的是System.Data.Entity,我使用的是Entity Framework 4.0。我遇到的文档不清楚哪个版本开始支持此方法,因此,可能是版本问题。