5

我在 SQL 中有一个表,在该表中我有 DateTime 列,其默认值为 GetDate()

在实体框架中,我希望它使用 SQL 日期时间,而不是使用运行控制台应用程序的计算机的本地日期时间(SQL 服务器落后 1 小时)。

该列也不允许空值,目前它传入 1/1/0001 的日期值,我收到一个错误:

将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。\r\n语句已终止。

谢谢!

4

3 回答 3

21
  1. 打开edmx设计器
  2. 选择您的 DateTime 列
  3. 转到属性并StoreGeneratedPattern从更改NoneComputed

这将告诉 EF 不要为该列插入值,因此该列将获得数据库生成的默认值。请记住,您将无法传递某些值。

于 2013-02-12T15:13:32.803 回答
3

如果您使用的是 Fluent API,只需将其添加到您的 DbContext 类中:

        modelBuilder.Entity<EntityName>()
            .Property(p => p.PropertyName)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
于 2017-04-25T08:22:46.327 回答
1

在 OnModelCreating 方法中为该实体设置 columnType:modelBuilder.Entity().Property(s => s.ColumnName).HasColumnType("datetime2");

于 2013-02-12T15:09:28.897 回答