Force Entity Framework 5使用datetime2数据类型

时间:2013-03-06 13:22:36

标签: c# entity-framework ef-code-first entity-framework-5

使用代码优先模型时,是否可以全局设置实体框架DbContext以使用datetime2作为System.DateTime的所有属性?

我可以使用HasColumnType()方法为每个列执行此操作,但对于现有的代码库,我想要一个全局解决方案。

2 个答案:

答案 0 :(得分:32)

由于EF6已经出现了很长一段时间,而且这个问题仍然出现在搜索中,这里是使用自定义约定来设置SQL类型的方法。在DbContext类的OnModelCreating方法中执行:

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

答案 1 :(得分:7)

不在EF5中,但EF6(目前在alpha版本中)允许使用custom conventions。对于EF5,您需要一些基于反射的基于自定义约定的框架,该框架将通过反射向模型构建器添加HasColumnType调用 - 例如检查EF Code First Extras(它声称支持可插入约定)。