是否有办法让实体框架在插入上使用SQL默认值,但允许更新到字段。我们有一个实例,其中SQL表具有标识列“id”,另一列设置为ident_current(“table”)。我知道使用默认值插入字段的唯一方法是将字段设置为DatabaseGenerated(DatabaseGeneratedOption.Computed)
,以便在插入时忽略它。但是,通过具有该属性,我们无法对列执行更新。此外,它是一个自引用外键,所以我们不能插入然后立即更新来解决问题。不要问我为什么桌子是这样设计的 - 就像之前设置的方式一样,所以我们暂时坚持使用它。我们的设置的简单图表如下:
DomainClass:
Class1 {
public int id {get;set;}
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int id2 {get;set;}
public string Name {get;set;}
}
SQL(伪):
Table (
id INT which is an identity(1,1) column,
id2 INT NOT NULL with a default value of ident_current("table")
Name nvarchar(50)
)
我们希望EF生成的insert语句为:
INSERT INTO Table(Name) VALUES('Name')
,更新为:
UPDATE table
SET id2 = *somenumber*, name = 'Name'
非常感谢所有的帮助。如果需要,我们正在使用EF 4.3.1.0。