2014-02-24 23 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 –