【发布时间】:2014-10-17 11:24:44
【问题描述】:
我正在使用SimpletInjector 使用以下代码在控制器中注入entity framework 上下文:
private static void Initializer(Container container)
{
container.RegisterSingle<IDbContext, SpotterContext>();
container.RegisterSingle<IUnitOfWork, UnitOfWork>();
}
我正在使用注入的上下文来执行存储过程,该存储过程将只有 UPDATE 或 DELETE 使用以下代码的语句:
context.Database.ExecuteSqlCommand(<spname>, <params array>);
我面临的问题是数据库中存储过程所做的更改没有反映在上下文中,当使用上下文访问更新的数据时,我得到的是旧数据而不是更新的数据。
如何在执行存储过程后更新context以从数据库中获取最新数据?
【问题讨论】:
-
阅读this - 你不应该真正将上下文注册为单例。
-
请注意@qujck 是正确的,并且您的问题是由使用 dbcontext 作为单例引起的。使用 Reload 方法可能看起来可以解决您的问题,但正如 qujck 的链接所解释的,dbcontext 不能跨线程和请求使用。
标签: c# sql-server entity-framework stored-procedures simple-injector