3

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

4

1 回答 1

0

没有办法AFAIK。看到这个那个。_

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

第二个链接指向有关默认值的通用处理的建议,目前也不支持,但将是添加对您需要的支持的另一个潜在起点。

于 2013-11-05T18:16:25.557 回答