E.F上下文 - 存储过程和查询

时间:2014-02-24 11:15:48

标签: c# sql-server entity-framework

我正在获得一个实体:

Account account;

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

然后我正在运行一个正在更改Accounts表上数据的存储过程:

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上,因为它没有让数据库发生变化。

由于

1 个答案:

答案 0 :(得分:1)

如果您使用相同的上下文,它将不会意识到实体已更改,它将返回存储在内存中的相同本地对象,而不是再次查询数据库。在重新查询using Detach之前,您可以创建一个全新的上下文或分离之前的对象:

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