Сначала в коде EF4.1. В чем разница между настройкой сущностей с использованием аннотаций, файлов конфигурации или в OnModelCreating? - PullRequest
2 голосов
/ 17 мая 2011

В настоящее время я использую отдельные файлы конфигурации и называю их следующим образом:

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

Кажется, что большинство примеров в сети действительно простые, поэтому они определяют свои модели, DbContext и конфигурации моделей в единомодин класс.Есть ли проблемы с производительностью или другие веские причины для использования одного над другим?

Ответы [ 2 ]

3 голосов
/ 17 мая 2011

Я не знаю, что именно вы имеете в виду под "файлами конфигурации", но на самом деле есть три основных варианта определения модели:

  • Условные обозначения: при создании классов модели выНазовите свои свойства таким образом, чтобы EF мог автоматически определять первичные ключи, внешние ключи, отношения и т. д.Если вы делаете это, следовательно, вам не нужны ни аннотации данных, ни перезапись OnModelCreating.

  • Аннотации данных: полезно, когда вы не можете или не хотите следовать правилам соглашения.Например, у вас есть существующая база данных, имена столбцов которой не соответствуют стандартным правилам именования EF, например, если у вас есть ключевой столбец с именем, которое EF не распознает как ключ:

    public class User
    {
        [Key]
        public int User_Code { get; set; }
    }
    
  • Свободный API в OnModelCreating: для расширенных сценариев сопоставления, которые нельзя определить с помощью аннотаций данных.Примеры: здесь .

Для работы я считаю, что не имеет значения, что вы используете.Подход - это вопрос вкуса и сложности вашей модели.EF создает внутреннее представление модели только один раз за время существования экземпляра приложения.(Это можно увидеть, установив точку останова в OnModelCreating: вы достигнете этой точки останова только один раз, независимо от того, как часто вы создаете новый DbContext.)

1 голос
/ 17 мая 2011

Нет, это только вопрос читабельности. По мере роста вашей модели вы, вероятно, получите очень большую конфигурацию в OnModelCreating. Чтобы сделать это более читабельным, вы разбиваете его на отдельные конфигурации.

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