2014-02-24 127 views
2

我得到一個實體:EF語境 - 存儲過程和查詢

Account account; 

account = context.Accounts.where(_ => _accountId = 1).FirstOrDefault(); 

然後我正在運行正在改變我的賬戶表數據存儲過程:

string query = string.Format("{0} {1}", 
          "SpUpdateAccount", 
          "@AccountId"; 

var results = context.Database.SqlQuery<int>(query, 
              paramAccountId); 

之後,我想以獲得我的帳戶實體與新的更改:

account = context.Accounts.where(_ => _accountId = 1).FirstOrDefault(); 

所以我的帳戶沒有得到由存儲完成的更新但是,當我對我的數據庫運行查詢時,程序更新了記錄。所以不知何故,我的問題在E.F上,因爲它沒有得到數據庫的更改。

感謝

+0

什麼版本的實體框架? –

+0

@DavidColwell我正在使用EF 6謝謝 –

+0

是否在同一個'using'語句中調用'context.Accounts.Where(...)'? –

回答

1

如果您使用的是相同的情況下,也不會意識到實體已經改變,它會回報你存儲在內存中,而不是再次查詢數據庫的同一個本地對象。您既可以創建一個全新的環境或之前分離前一個對象重新查詢using Detach

context.Detach(account); 
account = context.Accounts.where(_ => _accountId = 1).FirstOrDefault(); 
+0

我會盡力讓你知道@jnovo –