2

私のベーステーブルには既にいくつかのレジスタID = 5があります。 特殊なテーブルに同じIDを追加するにはどうすればよいですか?継承 - 特殊なテーブルだけにレコードを挿入

例:私はベーステーブルの上にいくつかの値を挿入

BaseTable 
ID INT 
Name Varchar(100) 

DerivedTable 
ID INT 
Test BIT 

Context.BaseTable.Add(new BaseTable(){ Name = '123' }); 
Context.SaveChanges(); 

アイデンティティは5

は、今私は専門的な値を追加したいです

Context.DerivedTable.Add(new DerivedTable(){ ID = 5, Test = 1 }); 
Context.SaveChanges(); 

It linqpadはSQLが新しいBaseTableレジスタを作成しようとしていることを私に示しています。

これを回避する方法はありますか?

TKS

+0

これらを 'テーブルごとのタイプ'としてマップしましたか? – Eranga

+0

@Eranga私は継承されたテーブルとしてマップされました – Alexandre

答えて

2

あなたはそれが(EDMX TPTCode first TPT)相続としてマッピングされている場合、あなたは(それはおそらく、あなたのモデルに抽象クラスでなければなりません)個別ベーステーブルに挿入してはなりません。派生テーブルにのみ挿入する必要があり、EFはマッピングされた両方のテーブルへの挿入を処理します:

Context.DerivedTable.Add(new DerivedTable(){ Name = "123", Test = 1 }); 
Context.SaveChanges(); 
+0

それは問題です、私は基本テーブルにEFを挿入するだけで派生します – Alexandre

+0

このような場合、継承を使用することはできませんし、代わりに通常のone- 1つの関係。 –

+0

私は構造を変更することはできません....私の回避策はストアプロシージャを作成し、EFを介してexecでした。 Tks Ladislav – Alexandre

関連する問題