仅使用EF6插入已分配的属性

时间:2016-05-20 05:08:47

标签: entity-framework entity-framework-6

是否可以让SaveChanges生成INSERT语句,该语句仅包含已为关联属性指定值的列。

例如:

administrator.Login = login
administrator.PasswordSalt = salt
administrator.Password = hashed
administrator.CreatedBy = "xxx"

db.Administrators.Add(administrator)
db.SaveChanges()

INSERT语句中只应包含四个字段。现在,SaveChanges正在添加所有字段,将未分配的属性设置为值NULL,这会阻止使用任何默认值。示例:CreatedDate的默认值为getdate()

1 个答案:

答案 0 :(得分:0)

在编译时,至少有两种不同的方法可以从INSERT/UPDATE语句中排除属性:

1)EDMX:转到实体并将属性的StoreGeneratedPattern选项设置为ComputedIdentity

如果使用CodeFirst:请尝试使用[DatabaseGenerated(DatabaseGeneratedOption.Computed)] attribite。

2)将AFTER INSERT触发器添加到SQL表以使用默认值更新插入的记录。 How to update inserted field in trigger

我不确定在纯EF中运行时是否可行。