2

私が収集した限りでは、エンティティへのLINQは、Load()またはを熱心にロードすることを推奨していInclude()ます。ただし、多層アプリケーションで積極的な読み込みをどこで行う必要があるのでしょうか。

Item GetItem(int id)データアクセス層(エンティティインスタンスをカプセル化するリポジトリクラス)が総称機能を持ち、ビジネスロジック層ではそうするのは正しいですか?

Item item = dbRepository.GetItem(itemId);
if (!item.itemDetails.IsLoaded)
 item.itemDetails.Load()

または、リポジトリクラスに、さまざまな外部関係をロードするさまざまな明示的な関数を含める必要があります。したがって、熱心にロードされた関係のアイテムを返しますか?

どうもありがとう!

編集:-http ://www.asp.net/learn/mvc/tutorial-29-cs.aspx

public Contact GetContact(int id)

Contactこの関数はエンティティタイプを返します。ただし、ビジネスロジックのニーズに応じて、エンティティの外部関係を変更したいLoad()場合があります。この要件は、ロードするリレーションを示すパラメーターを使用して、よりオーバーロードされたメソッドが必要であることを意味しますか、それとも単にビジネスロジックで実行しますか?Include()ContactGetContact()Load()

4

1 に答える 1

0

ほとんどの場合、どちらも行いません。代わりに、LINQ を使用して、エンティティの型をプレゼンテーション モデルの型にマップします。この場合、ロードについてまったく考える必要はありません。例えば:

var presentationModel = (from entity in Repository.Entities
                         select new PresentationEntity ()
                         {
                             Prop = entity.Prop,
                             ChildProp = entity.Child.Prop
                         }).First();

Child のロードについて考える必要がないことに注意してください。エンティティへの LINQ は、別の型に射影するときにこれを行います。

于 2009-03-30T13:34:17.567 に答える