实体框架和默认日期

时间:2013-02-06 12:17:20

标签: entity-framework

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

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

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

将datetime2数据类型转换为日期时间数据类型会导致超出范围的值。\ r \ n该语句已终止。

谢谢!

3 个答案:

答案 0 :(得分:20)

  1. 打开 edmx 设计器
  2. 选择日期时间列
  3. 转到媒体资源,将StoreGeneratedPatternNone更改为Computed
  4. 这将告诉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”);