EF 4.0,什么是ExecuteStoreQuery,在更新的EF版本中应该使用什么?

本文关键字:EF 什么 版本 更新 ExecuteStoreQuery | 更新日期: 2023-09-27 18:17:06

我刚刚从EF 4.0升级到6.1。我注意到我正在做的项目是在几个地方使用ExecuteStoreQuery,它在EF 6.1中不支持。问题是我不完全明白这是怎么回事。我更不知道我应该用什么来代替。

下面是一个例子:

var query = DBContext.ExecuteStoreQuery<sy1>("select * from sy1", "sy1", MergeOption.PreserveChanges).AsQueryable().FirstOrDefault();

是否有一个简单的修复使此操作在较新的版本?

EF 4.0,什么是ExecuteStoreQuery,在更新的EF版本中应该使用什么?

ExecuteStoreQueryObjectContext的一部分。DbContext是作为实体框架4.1的一部分添加的,只是包装ObjectContext,所以你可以下拉到它,如下所示:

(myContext as IObjectContextAdapter).ObjectContext;

然后你可以继续使用你现有的ExecuteStoreQuery调用,就像以前一样(这将是你的简单修复)。

或者(也许更干净)您可以在DbContext (http://msdn.microsoft.com/en-us/library/system.data.entity.database.sqlquery(v=vs.113).aspx)上使用本机SqlQuery方法

。像这样:

var query = myContext.Database.SqlQuery<sy1>("select * from sy1").FirstOrDefault();
需要注意的一点是,通过SqlQueryDatabase执行的查询是不跟踪的。不确定ExecuteStoreQuery是否是这种情况,但可能需要注意的事情。如果您需要跟踪,则需要在DbSet上使用等效的SqlQuery方法。