C# 使用EF和linq查询时,如何关闭更改跟踪?

C# 使用EF和linq查询时,如何关闭更改跟踪?,c#,linq,entity-framework,C#,Linq,Entity Framework,我正在构建实体框架查询,如下所示: var users = from u in this.UserRepository.GetAll() join s in this.UserSales.GetAll() select new MyNewObject { ... } return users.ToList(); 如果您只是为了某个特定的通话用途而关闭更改跟踪功能,我如何打

我正在构建实体框架查询,如下所示:

var users = from u in this.UserRepository.GetAll()
            join s in this.UserSales.GetAll()

            select new MyNewObject
            {
            ...
            }

return users.ToList();

如果您只是为了某个特定的通话用途而关闭更改跟踪功能,我如何打开此通话的更改跟踪功能?


仅针对该调用或所有调用?可能是
AsNoTracking
,但这取决于
GetAll()
返回的内容,以及
this.UserRepository.GetAll()
this.UserSales
是否可以作为一个查询加入。我们需要更多的细节来回答这个问题。只需一次调用。AsNoTracking似乎不适用于我,如果这很重要,我将首先使用代码。AsNoTracking是在EF 5中引入的。您使用的是之前的版本吗?否则,您可能只是缺少一个参考(参考将在我的答案中的链接中列出)。我有EF 6.01。我正在执行一个投影,即在最后选择MyNewObject{…},也许这就是原因?我更新了上面的代码。@user1361315正如我之前所问的,这完全取决于GetAll内部发生的事情、这些方法返回的内容以及两个存储库是否共享同一个上下文实例。没有准确的细节,你不能期望得到准确的答案。@GertArnold很抱歉没有听到你的评论。是的,所有存储库共享相同的上下文。GetAll使用的是GenericRepository,但我不能将它粘贴到这里。我看了看,谢谢,因为我想我必须在那里加上一个不伤脑筋的电话。
var myresult = query.Where(...).AsNoTracking().ToList()