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