我正在使用EF代码在.Net MVC中开发一个基本的CRUD应用程序。
我遇到了一个从来没有真正遇到过的问题。
基本上,我对数据库后端所做的任何更改都不会反映在应用程序中,除非我在服务器上重新启动网站,或者重新部署应用程序。
我有另一个应用程序在开发,它有完全相同的问题。
我使用该应用程序所做的任何更改都是可以的,但是任何对SQL后端的手动更新都无法完成。
我很确定它不是在客户端--我已经做了很大的刷新,手动清除了我所有的浏览数据,并在我的浏览器上安装了缓存杀手。
有什么办法可以开始调试这个问题吗?
谢谢
以下是我的db上下文文件的样子:
public partial class MyContext: DbContext
{
public MyContext() : base("name=MyContext")
{
}
public DbSet<MyDbSet> MyDbsets { get; set; }
etc...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}我在MVC层中使用了统一来调用它:
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
// register all your components with the container here
// it is NOT necessary to register your controllers
// e.g. container.RegisterType<ITestService, TestService>();
// repos
...my repos
// service
... my serives
container.RegisterType<MyContext>(new HierarchicalLifetimeManager());
RegisterTypes(container);
return container;
}我用这种方式建立了几十个应用程序,从来没有这样的问题。也不明白投反对票..。这是一个真正的问题
发布于 2016-05-25 16:02:52
使用HierarchicalLifetimeManager意味着返回的context实例与容器具有相同的生存期(每个会话)。如果每次会话总是使用相同的容器实例,则将继续重用相同的context实例,这是不建议的。您应该始终为每个“逻辑工作单元”创建一个新的context实例,然后再对其进行处理。寿命长的上下文可能会表现出非常奇怪的行为(通常表现为“缓存”)和糟糕的性能。
PerRequestLifetimeManager将在每次请求时返回context的一个新实例,这将负责重复使用同一个context实例。
https://stackoverflow.com/questions/37418122
复制相似问题