我在SQL中有一个表,在该表中我有DateTime列,默认值为GetDate()
在实体框架中,我希望它使用SQL日期时间,而不是使用运行控制台应用程序的计算机的本地日期时间(SQL服务器落后1小时)。
该列也不允许空值,目前它传递的日期值为1/1/0001,我收到错误:
将datetime2数据类型转换为日期时间数据类型会导致超出范围的值。\ r \ n该语句已终止。
谢谢!
答案 0 :(得分:20)
StoreGeneratedPattern
从None
更改为Computed
这将告诉EF不要为该列插入值,因此列将获得由数据库生成的默认值。请记住,您将无法传递某些价值。
答案 1 :(得分:2)
如果您正在使用Fluent API,只需将其添加到您的DbContext类:
modelBuilder.Entity<EntityName>()
.Property(p => p.PropertyName)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
答案 2 :(得分:1)
在OnModelCreating方法中为该实体设置columnType: modelBuilder.Entity()。Property(s =&gt; s.ColumnName).HasColumnType(“datetime2”);