Заставить Entity Framework 5 использовать тип данных datetime2

Возможно ли глобально установить Entity Framework? DbContext использовать datetime2 для всех свойств, которые System.DateTime при использовании модели Code-First?

Я могу сделать это для каждого столбца с помощью HasColumnType() метод, но для существующей кодовой базы я хотел бы глобальное решение.

2 ответа

Решение

Так как EF6 давно отсутствует, и этот вопрос все еще появляется в поисках, вот способ использования пользовательских соглашений для установки типа SQL. В методе OnModelCreating вашего класса DbContext выполните:

modelBuilder.Properties<DateTime>()
    .Configure(c => c.HasColumnType("datetime2"));

Не в EF5, но в EF6 (в настоящее время в альфа-версии) это допускается с помощью пользовательских соглашений. Для EF5 вам понадобится некоторая основанная на соглашении основа, основанная на рефлексии, которая добавит HasColumnType вызывает конструктор моделей через рефлексию - проверьте, например, EF Code First Extras (он утверждает, что имеет поддержку подключаемых соглашений).

Другие вопросы по тегам