使用代码优先模型时,是否可以全局设置实体框架DbContext
以使用datetime2
作为System.DateTime
的所有属性?
我可以使用HasColumnType()
方法为每个列执行此操作,但对于现有的代码库,我想要一个全局解决方案。
答案 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(它声称支持可插入约定)。