0

EntityFrameWork の既存の別のエンティティに基づいて新しいエンティティを作成したいと考えています。

たとえば、ID=999 の fooEntity が Db に存在する場合、barEntity オブジェクトを作成するとします。

var fooEntity =GetFooByID(999);

if (fooEntity != null)
{
  var barEntity = new Bar()
        {
            Sweetness = 8,
            Bitterness = 5,
            // goes on...
        }

 SaveBarEntity(barEntity); 
}

私の懸念は、SaveBarEntity(barEntity); を呼び出した時点で fooEntity がもう存在しないことです。

質問: 保存時に fooEntity が Db に存在しない場合に例外をスローするように、何らかの形で EntityFramework を強制することは可能ですか?

(私には、fooEntity を「作業単位」の一部にするように思えます。しかし、Entity Framework でどのように達成できるのでしょうか?)

4

2 に答える 2

1

Fooデータベースにはとの間に関係がないため、テーブルBarの挿入および更新データベーストリガーを作成して、関連するエンティティが存在するかどうかを確認する唯一の方法だと思います。関連するエンティティ ID をデータベースに渡すには、EF の保存動作を変更して ID を DB のコンテキストに渡す必要があります。BarFooFoo

これにはかなりの労力が必要です。Fooモデル内でとの間に関係を作成する方が良いと思いBarます (Foo と Bar の間に関係があるように見えるので、これは適切な方法のようです)。

于 2013-01-11T07:50:32.867 に答える
0

不要な作業ですが、Foo レコードで更新を実行できます。

var fooEntity =GetFooByID(999);

if (fooEntity != null) {
    var barEntity = new Bar() {
        Sweetness = 8,
        Bitterness = 5,
        // goes on...
    };

    SaveBarEntity(barEntity); 
    SaveFooEntity(fooEntity); // If necessary, do something to make sure EF performs an update
}
于 2013-01-11T08:01:29.917 に答える