2012-12-12 57 views
0

我正在使用entityframework 5,我注意到如果我從我的數據庫使用linq加載一個對象我的結果對象存儲在dbcontext,但如果我想使用ExecuteStoreQuery加載相同的對象,結果不存儲在數據庫上下文。dbContext.ExecuteStoreQuery <t>不在dbcontext上存儲對象?

這是預期行爲嗎?或者我能做些什麼來維護secon方式查詢con dbcontext的結果?

1路(LINQ):

var obj = dbcontext.table.where(o=> o.id == queryId).FirstOrDefault(); 

第二路(ExecuteStoreQuery):

var obj = dbcontext.executestorequery("select * from...").FirstOrDefault(); 
+0

第1步:[查找您正在使用的方法的重載](http://msdn.microsoft.com/zh-cn/library/ee835300.aspx) – AakashM

回答

1

Database中的DbContext API沒有ExecuteStoreQuery - 這是從ObjectContext的方法。 DbContext API只使用SqlQuery方法。

如果你想爲你的LINQ查詢得到,你必須用它來獲得與本地SQL相同的行爲:

var obj = dbcontext.table.SqlQuery("select * from ... "); 

直接DbContext實例或DbSet<>實例調用SqlQuery之間的區別是,在第一案例結果沒有附加上下文跟蹤,但在第二種情況下。

如果你正在使用你需要使用的ExecuteStoreQuery重載的版本,並通過設置,否則結果不被上下文跟蹤的第二個參數實體的名稱ObjectContext的API。