1

相互に関連するオブジェクトの堅牢なセットがあり、それらをデータベースに保存するための最良の方法を見つけ出す必要がありますが、データの制約なども考慮する必要があります。

次のクラスがあるとします。

class Foo
{
    public int Id { get; set; }
    public int BarId { get; set; }
    Bar _bar;
    public Bar Bar 
    {
        get { return _bar; }
        set
        {
            if(_bar != value)
            {
                 _bar = value;
                 BarId = value.Id;
            }
        }
     }
}

class Bar 
{
    public int Id { get; set; }
}

次に、次のコードがあるとします。

var f = new Foo() { Bar = new Bar() };
SaveFoo(f);

オブジェクトを適切な順序でデータベースに保存するには、SaveFoo で何をすべきですか?

重要な注意: MyGeneration を使用して SQL データ構造からこれらすべてをコード生成しています。生成中にすべての制約にアクセスできます。

4

1 に答える 1

1

あなたは裏返しに働かなければなりません。

クラス (この場合、Bar in Foo) に "Navigation プロパティ" がある場合、外部 ID (BarID) が付随します。したがって、オブジェクト自体を保存する前に、ネストされたオブジェクトを最初に保存する必要があります。

ここで危険にさらされる問題は、循環するプロパティ (著者が本を書いている、本に著者がいる) です。

次の問題はカスケード削除です。

これはあなたが求めていたものでしたか?

于 2011-09-21T00:26:56.717 に答える