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();
是否有一个简单的修复使此操作在较新的版本?
ExecuteStoreQuery
是ObjectContext
的一部分。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();
需要注意的一点是,通过SqlQuery
从Database
执行的查询是不跟踪的。不确定ExecuteStoreQuery
是否是这种情况,但可能需要注意的事情。如果您需要跟踪,则需要在DbSet
上使用等效的SqlQuery
方法。