我将以下Db表Person定义为
[PersonId] INT NOT NULL PRIMARY KEY IDENTITY,
[FirstName] VARCHAR(50),
[MiddleName] VARCHAR(50),
[LastName] VARCHAR(50),
[DOB] DATETIME,
[EmailAddress] VARCHAR(100),
[CreatedDt] DATETIME NOT NULL DEFAULT getDate(),
使用EF 5.0的Web API项目中此表的相应模型是
public int personId { get; set; }
public string firstName { get; set; }
public string middleName { get; set; }
public string lastName { get; set; }
public Nullable<System.DateTime> dob { get; set; }
public string emailAddress { get; set; }
public System.DateTime createdDt { get; set; }
我使用EF Code First来获取和设置JSON格式的值。 POST(创建新人)生成错误{“将datetime2数据类型转换为日期时间数据类型导致超出范围的值。\ r \ n语句已终止。”}
然后我将Db列更改为[CreatedDt] **DATETIME2** NOT NULL DEFAULT getDate(),
但是现在CreatedDt被保存为01/01/0001,这不是我想要的。我希望将日期设置为当前数据库日期。
当我尝试从模型中将CreatedDt值作为NULL传递时,它仍然不起作用(因为此列不允许空值)。你能帮我把这个CreatedDt列的值设置为getDate(),它是在数据库的列定义中定义的。我需要设置当前数据库日期,因此我也无法从Web API POST方法传递当前日期。
答案 0 :(得分:0)
现在可以通过将这行代码放在模型MAP文件
中来实现this.Property(t =&gt; t.createdDt).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);