Заставить 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 (он утверждает, что имеет поддержку подключаемых соглашений).