无法使用实体框架插入

时间:2013-06-11 12:31:34

标签: asp.net-mvc wcf linq entity-framework

我必须使用Entity Framework和Linq查询进行插入。对于实体类,所有字段在数据库表上都不可为空。我得到了实体类的一些必要字段值,只需要在表上创建一行。但其余的领域可以从实体中取代。请建议我一个防止的方法,这样如果我不提供这些字段值,实体将不会将它作为null发送到db表,并可以在表上创建一个新行。

1 个答案:

答案 0 :(得分:0)

NULL / NOT NULL约束。当您在列上指定NOT NULL时,您实际上告诉SQL Server必须为该列提供某些值,否则该行无效。您不能在异想天开的列上允许空值,因为这会破坏约束的整个目的。

所以你的选择是:1)你使列可以为空或2)你提供一个默认值。在数据库级别,您可以运行:

ALTER TABLE SomeTable ADD CONSTRAINT DF_SomeColumn DEFAULT [Some Default Value Here] FOR SomeColumn;

实体框架目前不允许直接指定默认值,因此您必须在事后修改表格。

或者,您只需使用自定义getter和setter为您的属性提供默认值。但是,这不会对数据库施加任何约束,因此只有EF正在插入时它才会起作用:

private DateTime? createdDate;
public DateTime CreatedDate
{
    get { return createdDate ?? DateTime.UtcNow; }
    set { createdDate = value; }
}