23

我有一个存储过程可以更改数据库中的大量数据。该存储过程是从同时使用 EF 进行数据操作的应用程序调用的。

所以我单击一个按钮,存储过程在数据库中运行,数据被更改,EF 向用户显示旧数据。

有没有办法强制 DbContext 或 ObjectContext 刷新数据库中的数据?ObjectContext.Refresh() 可能是解决方案,但我不想为每个可能更改的表调用此方法。我希望一次刷新所有表格。

我正在使用面向 .NET 4.0 的 Entity Framework 5

编辑:添加的数据可用,但 EF 不反映对现有数据的修改。我看到了新添加的记录,但看不到我对现有记录所做的更改。

4

2 回答 2

17

你的DbContext应该是短暂的。创建它,运行您的查询,然后处理它。

using (var context = new MyProject.DbContext())
{
    // run your query here
}

不要保留你的上下文。这样你就不会对旧数据有任何问题。

于 2013-09-16T14:33:50.923 回答
3
db = new DbContext())
var context= ((Infrastructure.IObjectContextAdapter)db).ObjectContext;
context.Refresh(Core.Objects.RefreshMode.StoreWins, context.ObjectStateManager.GetObjectStateEntries(EntityState.Unchanged | EntityState.Modified))
于 2013-09-16T14:26:49.113 回答