EF 4.1 Code First - один контекст или несколько контекстов? - PullRequest
6 голосов
/ 07 апреля 2011

Может ли кто-нибудь предложить какой-либо совет о том, является ли наилучшей практикой использование одного контекста или нескольких контекстов?

Например, должен ли я иметь единственный контекст следующим образом:

   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.

Это может быть только личный выбор, но наша база данных будет состоять из сотен объектов. Поэтому я хотел бы получить это право для начала.

Большое спасибо,

Paul.

Ответы [ 2 ]

6 голосов
/ 08 апреля 2011

Простое правило: одна схема / домен, один контекст.

2 голосов
/ 07 апреля 2011

Если это вообще возможно, попытайтесь разделить их по осмысленным строкам.

100 сущностей в контексте могут показаться плохими, но подумайте о своей альтернативе, 100 различных контекстов?

Тогда выпришлось бы делать что-то вроде

using(CompanyContext cc = new CompanyContext)
{
}

using (CountryContext cc = new CountryContext)
{
}

Если бы вам нужно было запрашивать несколько таблиц, у вас были бы вложенные контексты, и это было бы ужасно.У вас начнутся такие вещи, как

using(CompanyContext comp = new CompanyContext)
    {
        using (CountryContext country = new CountryContext)
       {
       }
    }

Я не могу себе представить, что производительность будет улучшаться, но я уверен, что обслуживание будет проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...