OnModelCreating против DataAnnotations для конфигурации базы данных - PullRequest
4 голосов
/ 22 марта 2012

У меня есть более подходящее решение, в котором есть проект домена для моих классов POCO. Я хочу создать базу данных с некоторыми полями таблицы, привязанными к определенной длине. Теперь я вижу два способа сделать это: либо аннотации данных в самих классах POCO, либо использование метода OnModelCreating в моем DbContext, но какой из них лучший?

Моя проблема с подходом OnModelCreating заключается в том, что это относится только к Entity Framework. Если я переключусь на другой ORM, конфигурация базы данных будет потеряна, если я не буду ее повторно внедрять.

При использовании подхода «Аннотации» я в итоге загромождаю свои модели и беспокоюсь, что они теряют тег «POCO». Я также не уверен, что другие ORM будут уважать аннотации. С другой стороны, вся информация о том, как должна выглядеть база данных, связана с моделью, поэтому ее легко поддерживать.

Есть мысли, чтобы направить меня в правильном направлении?

1 Ответ

3 голосов
/ 22 марта 2012

OnModelCreating лучше. Некоторые функции сопоставления недоступны в аннотациях данных. Более того, как вы уже упоминали, в некоторых случаях аннотации данных идут вразрез с принципом POCO, потому что ваши классы могут содержать информацию о постоянстве, и даже некоторые аннотации данных в настоящее время нуждаются в EntityFramework.dll, указанном в проекте вашего домена.

Также следует помнить, что аннотации данных являются специфической функцией MS, используемой в основном инструментами MS. Если вы хотите использовать их с другими ORM, вам нужно будет выполнить преобразование из аннотаций данных в описание отображения ORM (если оно еще не существует).

...