EF 4.1 Code First - 单个上下文还是多个上下文?

时间:2011-04-07 14:52:22

标签: ef-code-first

是否有人可以提出有关单一上下文或多个上下文是否为最佳做法的建议?

例如,我应该如下所示:

   public class MyContext
      : DbContext
  {
      public DbSet<Company> Companies { get; set; }

      public DbSet<Country> Countries { get; set; } 

      protected override void OnModelCreating(DbModelBuilder modelBuilder)
      {
          modelBuilder.Configurations.Add(new CountryConfiguration());
          modelBuilder.Configurations.Add(new CompanyConfiguration());
          base.OnModelCreating(modelBuilder);
      }
  }

或者我会更好地为公司和国家创建单独的上下文?所以ConpanyContext和CountryContext都会公开一个DbSet属性。

它可能只是个人选择,但我们的数据库将由100个实体组成。因此,我希望从一开始就做到这一点。

非常感谢,

保罗。

2 个答案:

答案 0 :(得分:6)

一个简单的经验法则:一个架构/域,一个上下文。

答案 1 :(得分:2)

如果可能的话,尝试将它们沿着有意义的线分开。

上下文中的100个实体可能看起来很糟糕,但想想你的替代方案,100个不同的背景?

然后你必须做像

这样的事情
using(CompanyContext cc = new CompanyContext)
{
}

using (CountryContext cc = new CountryContext)
{
}

如果你需要查询多个表,你就会有嵌套的上下文,而且会变得很难看。 你开始有像

这样的东西了
using(CompanyContext comp = new CompanyContext)
    {
        using (CountryContext country = new CountryContext)
       {
       }
    }

我无法想象这样会改善表现,但我确信维修会很痛苦。