Как переключиться на datetime2 в проекте Entity Framework/SQL Server 2008

У нас есть проект Entity Framework 5.0 с миграцией кода сначала с SQL Server 2008, но все свойства даты были созданы в базе данных как столбцы datetime, а не datetime2.

Можно ли создать миграцию с помощью add-migration, которая обновит все столбцы datetime в базе данных? Есть ли другой простой способ везде переключиться на datetime2?


person mykola    schedule 28.03.2013    source источник


Ответы (2)


Это старый пост, но если вы хотите переключить ВСЕ свои столбцы datetime на datetime2 и использовать datetime2 для любых новых добавляемых столбцов (другими словами, заставить EF использовать datetime2 по умолчанию), вы можете добавить это в метод OnModelCreating на ваш контекст:

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

Что получит все DateTime и DateTime? свойства для всех сущностей в вашей модели.

person Mark Shapiro    schedule 11.12.2015
comment
IIRC это только EF6. - person Der Kommissar; 10.01.2017
comment
Да, это только EF6, хотя он также может работать на EF5 (если вы используете EF5, обновитесь до 6!) EF7/EF Core имеют значительно отличающуюся реализацию от EF6, и я не помню, поддерживала ли это EF4/EF5. или нет. - person Mark Shapiro; 11.01.2017

Вы можете использовать свободный API для принудительного создания datetime2 столбцов в БД.

Я нашел это:

Использование свойств DateTime в Code- Первая Entity Framework и SQL Server

Вы должны быть в состоянии понять идею.

Или, если вам нужно придерживаться существующей БД, вы сможете создать миграцию, которая выполняет собственный код T-SQL. Вот пример:

http://msdn.microsoft.com/en-us/data/jj591621.aspx

person Floremin    schedule 28.03.2013
comment
спасибо Флоремин. Я действительно могу создать миграцию с помощью пользовательского SQL. Есть ли способ автоматизировать переключение? Есть ли способ сообщить коду, чтобы использовать datetime2 для любого нового свойства Date в будущем? - person mykola; 29.03.2013
comment
Я думаю, что первая ссылка объясняет именно это. Fluent API — это способ настроить поведение кода по умолчанию. - person Floremin; 31.03.2013