20

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

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

4

2 回答 2

47

这是一篇旧文章,但如果您想将所有日期时间列切换为 datetime2,并将 datetime2 用于您添加的任何新列(换句话说,使 EF 默认使用 datetime2),您可以将其添加到 OnModelCreating 方法你的上下文:

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

那会得到所有的DateTime和DateTime吗?模型中所有实体的属性。

于 2015-12-11T21:41:44.293 回答
10

您可以使用 fluent API 强制datetime2在 DB 中创建列。

我找到了这个:

在 Code-First Entity Framework 和 SQL Server 中使用 DateTime 属性

你应该能够得到这个想法。

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

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

于 2013-03-28T17:07:15.943 回答