首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪的缓存问题EF Code First Application SQL Server 2014

奇怪的缓存问题EF Code First Application SQL Server 2014
EN

Stack Overflow用户
提问于 2016-05-24 15:38:33
回答 1查看 85关注 0票数 0

我正在使用EF代码在.Net MVC中开发一个基本的CRUD应用程序。

我遇到了一个从来没有真正遇到过的问题。

基本上,我对数据库后端所做的任何更改都不会反映在应用程序中,除非我在服务器上重新启动网站,或者重新部署应用程序。

我有另一个应用程序在开发,它有完全相同的问题。

我使用该应用程序所做的任何更改都是可以的,但是任何对SQL后端的手动更新都无法完成。

我很确定它不是在客户端--我已经做了很大的刷新,手动清除了我所有的浏览数据,并在我的浏览器上安装了缓存杀手。

有什么办法可以开始调试这个问题吗?

谢谢

以下是我的db上下文文件的样子:

代码语言:javascript
复制
 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层中使用了统一来调用它:

代码语言:javascript
复制
 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;
        }

我用这种方式建立了几十个应用程序,从来没有这样的问题。也不明白投反对票..。这是一个真正的问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-25 16:02:52

使用HierarchicalLifetimeManager意味着返回的context实例与容器具有相同的生存期(每个会话)。如果每次会话总是使用相同的容器实例,则将继续重用相同的context实例,这是不建议的。您应该始终为每个“逻辑工作单元”创建一个新的context实例,然后再对其进行处理。寿命长的上下文可能会表现出非常奇怪的行为(通常表现为“缓存”)和糟糕的性能。

PerRequestLifetimeManager将在每次请求时返回context的一个新实例,这将负责重复使用同一个context实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37418122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档