是否可以让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()
。
答案 0 :(得分:0)
在编译时,至少有两种不同的方法可以从INSERT/UPDATE
语句中排除属性:
1)EDMX:转到实体并将属性的StoreGeneratedPattern
选项设置为Computed
或Identity
。
如果使用CodeFirst:请尝试使用[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
attribite。
2)将AFTER INSERT
触发器添加到SQL表以使用默认值更新插入的记录。 How to update inserted field in trigger
我不确定在纯EF中运行时是否可行。