3

Code-First EF4 ウォークスルーの一部では、POCO を定義するときに次のようなパターンが見られます。

public class Product
{
    public int ID { get; set; }

    public int ManufacturerId { get; set; }
    public virtual Manufacturer Manufacturer { get; set; }
}

Product に ManufacturerId と Manufacturer への参照の両方が必要なのはなぜですか? 遅延読み込みと関係がありますか?

4

1 に答える 1

2

Entity Framework の話に戻ります。EF1 では、FK (例: ManufacturerId) が依存オブジェクト (例: Product) で公開されず、ナビゲーション プロパティ (例: Manufacturer) でのみ動作することを意味する、独立した関連付けのみがありました。EF4 では、新しいタイプのアソシエーションが導入されました。FK がモデルに表示され、それらを直接操作できる外部キー アソシエーションです。

したがって、以下はまだ完全に有効なモデルですが、一種の EF1 スタイル (つまり、独立した関連付け) です。

public class Product {
    public int ID { get; set; }
    public virtual Manufacturer Manufacturer { get; set; }
}

とはいえ、オブジェクト モデルを操作するための究極の柔軟性が得られるため、常にオブジェクトに外部キーを含めることをお勧めします。

public class Product {
    public int ID { get; set; }
    public int ManufacturerId { get; set; }
    public virtual Manufacturer Manufacturer { get; set; }
}

興味深い点は、慣例により、EF コードは最初にナビゲーション プロパティManufacturerIdの FK であると認識し、Manufacturerそれに基づいてデータベース内の関係を作成することです。

ところで、遅延読み込みとは何の関係もありません。モデルで行ったように、ナビゲーション プロパティをviualとしてマークする限り、遅延読み込みは FK の有無にかかわらず機能します。

于 2010-12-05T20:42:59.000 に答える