【问题标题】:Entity Framework 6. Disable ModelCaching实体框架 6. 禁用模型缓存
【发布时间】:2016-08-23 06:08:26
【问题描述】:

好的,谷歌,我无法用谷歌搜索它。 Documentation

然后缓存该上下文的模型,并用于应用程序域中上下文的所有进一步实例。可以通过在给定的 ModelBuidler 上设置 ModelCaching 属性来禁用此缓存

所以confirms它。但我找不到办法。我必须禁用缓存,因为我想通过一个模型从多个具有相同结构的日志表中获取数据,所以我的代码看起来像

logTableNames.ForEach(n =>
{
    using (var context = new LogContext(n))
    {
        Console.WriteLine($"Project: {n} -- {context.Logs.Count()} rows.\n");
    }
});

并配置

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Log>().ToTable(_tableName);
}

但“OnModelCreating”方法只调用了一次,我无法重新配置表映射。那么也许还有另一种真正的方式来完成我的任务?

【问题讨论】:

    标签: c# entity-framework caching entity-framework-6


    【解决方案1】:

    这是 Entity Framework 团队项目经理的回答。

    罗文米勒 (MSFT)

    我们在 CTP5 中删除了 CacheForContextType,我们原本打算将其用于 当人们想在相同的环境中使用相同的上下文时使用 AppDomain 具有不同的模型。问题是它会创建 在每次初始化时建模,并且不允许任何方式缓存 系列模型并选择在每个模型中使用哪一个 初始化。模型创建很昂贵,所以我们想推广一个 更好的模式。

    我们推荐的模式是外部创建模型构建器 -> DbDatabaseMapping -> 您要使用的每个模型的 DbModel。这 DbModel 应该被缓存并用于创建上下文实例。这 ModelBuilder -> DbModel 工作流程有点乱,类名 不是很好,他们会为 RTM 整理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      相关资源
      最近更新 更多