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