从Web API POST方法发布数据时无法设置DB列的默认值

时间:2013-06-24 07:00:26

标签: asp.net-web-api

我将以下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方法传递当前日期。

1 个答案:

答案 0 :(得分:0)

现在可以通过将这行代码放在模型MAP文件

中来实现

this.Property(t =&gt; t.createdDt).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);