我有一个存储过程,可以更改数据库中的大量数据。此存储过程是从同时使用EF进行数据操作的应用程序调用的。
因此,我单击一个按钮,存储过程在数据库中运行,数据被更改,EF向用户显示旧数据。
有没有办法强制DbContext或ObjectContext刷新数据库中的数据?ObjectContext.Refresh()可能是解决方案,但我不想为可能更改的每个表调用此方法。我希望所有的表都能一次刷新。
我正在使用Entity Framework5,目标是.NET 4.0
编辑:添加的数据可用,但EF不反映对现有数据的修改。我看到了新添加的记录,但看不到我对现有记录所做的更改。
发布于 2013-09-16 22:33:51
你的DbContext
应该是短暂的。创建它,运行您的查询,并处理它。
using (var context = new MyProject.DbContext())
{
// run your query here
}
不要把你的上下文留在周围。这样你就不会有任何旧数据的问题了。
发布于 2013-09-16 22:26:49
db = new DbContext())
var context= ((Infrastructure.IObjectContextAdapter)db).ObjectContext;
context.Refresh(Core.Objects.RefreshMode.StoreWins, context.ObjectStateManager.GetObjectStateEntries(EntityState.Unchanged | EntityState.Modified))
https://stackoverflow.com/questions/18829376
复制相似问题