0

現在のプロジェクトの1つでSQLServerデータベースに対してEF4を使用していて、パフォーマンスの問題が発生しています。以下にBookクラスとAuthorクラスがあるとします(コンパイルされていませんが、例のためだけです)。

public class Book
{
    public Author Author { get; set; }
}

public class Author
{
    public List<Book> Books { get; set; }
}

書籍は簡単に読み込むことができますが、以下のように著者が書籍に割り当てられている場合、Booksプロパティに明示的にアクセスされていなくても、クエリが実行されて著者のすべての書籍が検索されます。

私たちの実際の例(本や著者ではない)では、これは決して使用されない何千ものオブジェクトをロードする可能性があります。これを引き起こす可能性のある派手なゲッター/セッターはありません。

何が問題を引き起こしている可能性があるかについてのアイデアはありますか?書籍リストが削除された場合、クエリは実行されませんが、一部のシナリオでは合法的に使用される場合があります。

ありがとう、ジョン

4

1 に答える 1

1

Entity Frameworkを使用している場合、「仮想」としてマークされていない関連プロパティは、オブジェクトが最初に作成されたときに読み込まれます。著者のBooksプロパティを自動的にロードしたくない場合は、次のようにコードを更新してください。

public class Book
{
    public Author Author { get; set; }
}

public class Author
{
    public virtual List<Book> Books { get; set; }
}

EagerLoadingとLazyLoadingの詳細については、次を参照してください... http://msdn.microsoft.com/en-us/data/jj574232.aspx

于 2014-01-21T20:07:24.553 に答える