3

エンティティフレームワークが挿入時にSQLのデフォルト値を使用し、それでもフィールドの更新を許可する方法はありますか?SQLテーブルにID列"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 INTO Table(Name) VALUES('Name') 

更新は次のとおりです。

UPDATE table 
SET id2 = *somenumber*, name = 'Name'

すべての助けをどうもありがとう。必要に応じて、EF4.3.1.0を使用しています。

4

1 に答える 1