如何在Entity Framework/SQL Server 2008项目中切换到datetime2

myk*_*ola 15 .net sql-server ef-migrations entity-framework-5

我们有一个Entity Framework 5.0项目,它使用SQL Server 2008进行代码优先迁移,但所有日期属性都是作为datetime列在数据库中创建的- 而不是datetime2.

是否可以使用将更新datetime数据库中所有列的添加迁移来创建迁移?有没有其他简单的方法切换到datetime2任何地方?

Mar*_*iro 38

这是一个旧帖子,但是如果你想将所有日期时间列切换到datetime2,并将datetime2用于你添加的任何新列(换句话说,默认情况下使EF使用datetime2),你可以将它添加到OnModelCreating方法上.你的背景:

modelBuilder.Properties<DateTime>().Configure(c => c.HasColumnType("datetime2"));
Run Code Online (Sandbox Code Playgroud)

这将获得所有DateTime和DateTime?模型中所有实体的属性.


Flo*_*min 10

您可以使用流畅的API强制datetime2在DB中创建列.

我找到了这个:

在代码优先实体框架和SQL Server中使用DateTime属性

你应该能够理解这个想法.

或者,如果您必须坚持使用现有数据库,那么您应该能够创建执行自定义T-SQL代码的迁移.这里有一个例子:

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