私が集めた限りでは、エンティティへのLINQはLoad()
またはInclude()
という熱意のあるローディングを推奨します。しかし、私は積極的な読み込みは、多層アプリケーションで行われる必要がありますか?エンティティへのEager-loading&LINQ
は、それが一般的なItem GetItem(int id)
機能を持っているために、データアクセス層(エンティティインスタンスをカプセル化するリポジトリクラス)のために正しいです、とビジネスロジック層で
Item item = dbRepository.GetItem(itemId);
if (!item.itemDetails.IsLoaded)
item.itemDetails.Load()
またはリポジトリのクラスは、明示的に異なる必要がありますを行います異なる外交関係をロードする関数は、熱心に負荷される関係のItemを返します。
多くの感謝!
編集: 例 - http://www.asp.net/learn/mvc/tutorial-29-cs.aspx
public Contact GetContact(int id)
この関数は、Contact
エンティティタイプを返します。しかし、ビジネスロジックのニーズに応じて、Contact
エンティティの異なる外部関係をLoad()
またはInclude()
にすることができます。この要件は、どのような関係をロードするかを示すパラメータを持つより多くのオーバーロードされたGetContact()
メソッドを必要とするか、単にビジネスロジックでLoad()
を実行する必要がありますか?
あなたの答えをありがとう。この種の論理はどこで行われるべきですか?モデルレイヤー(私はMVCを想定しています)でマッピングを行うと、データアクセスレイヤーがプレゼンテーションモデルを知る必要があるように、PresentationモデルでModelクラスを混乱させることはありませんか? –
リポジトリタイプからプレゼンテーションモデルタイプへのマッピング(およびその逆)は、コントローラ内に存在する必要があります。 –
これは、linqクエリがコントローラ内にも存在することを意味しますか? (申し訳ありません、これはかなり新しいです) –