有没有办法让实体框架在插入时使用 SQL 默认值,但允许更新到字段。我们有一个实例,其中一个 SQL 表有一个标识列“id”和另一个设置为 ident_current(“table”) 的列。我知道使用默认值插入字段的唯一方法是将字段设置为DatabaseGenerated(DatabaseGeneratedOption.Computed)
在插入时忽略它。但是,通过拥有该属性,我们无法对列执行更新。它也是一个自引用外键,所以我们不能先插入然后立即更新来解决这个问题。不要问我为什么桌子是这样设计的——就像它之前的设置方式一样,所以我们现在有点坚持。我们的设置的简单图表如下:
域类:
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 INTO Table(Name) VALUES('Name')
更新为:
UPDATE table
SET id2 = *somenumber*, name = 'Name'
非常感谢所有的帮助。如果需要,我们也使用 EF 4.3.1.0。