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

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

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

Ответы

Ответ 1

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

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

Ответ 2

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