Миграция Entity Framework на datetime2
Сначала мы используем код Entity Framework 6. Недавно мы решили переместить формат даты и времени в базе данных в формат datetime2. Наша база данных в настоящее время содержит много данных и около 262 таблиц.
Погуглив, я нашел ответ, который описывает, как перейти на datetime2:
modelBuilder.Properties<DateTime>()
.Configure(c => c.HasColumnType("datetime2"));
Поэтому я поместил эту часть кода в OnModelCreating
метод. Затем я запустил Add-Migration commend, который создал метод Up, содержащий множество DropPrimaryKey
, AlterColumn
а также AddPrimaryKey
строки, как в этом примере:
Затем я запустил Update-Database commend и получил это сообщение об ошибке:
Объект "DF__AdminMessa__Date__353DDB1D" зависит от столбца "Дата".
ALTER TABLE ALTER COLUMN Дата не выполнена, поскольку один или несколько объектов имеют доступ к этому столбцу.
Я предполагаю, что эта ошибка вызвана ограничениями на таблицы. Я знаю, что могу временно отключить их и снова запустить этот сценарий, но тогда нам придется запустить сценарий, который отключает ограничения, вручную на ~262 таблицах. Кроме того, я не знаю, нормально ли это, чтобы запускать такие сценарии при использовании Code First.
Есть ли какой-нибудь правильный способ перенести существующую базу данных (с данными) в datetime2 в EF Code First?