实体框架数据库默认插入允许更新

时间:2013-03-20 17:57:14

标签: entity-framework

是否有办法让实体框架在插入上使用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。

1 个答案:

答案 0 :(得分:0)

AFAIK没有办法。请参阅thisthat

第一个链接指向使用序列作为主键的建议,这似乎是您可能想要做的事情,而不是给出您的示例代码。

第二个链接指向一个关于默认值的通用处理的建议,目前也不支持,但这是另一个潜在的起点,可以为您提供所需的支持。