戻りたい結合データを表すクラス(たとえばProductDetails
)を定義し、データレイヤーからIQueryable<ProductDetails>
を返すことをお勧めします。
照会可能に戻すには、あなただけの単純なLINQクエリを記述することができます。
public IQueryable<ProductDetails> GetProducts() {
return from p in db.Products
join d in db.Details on p.ID equals d.ID
select new ProductDetails { p.Name, d.Notes };
}
このアプローチにはいくつかの利点があります。
あなたが直接YourDataContext
物体を露光していない - それは滞在することができますDAOクラスのプライベートフィールドとして(短命の場合)、必要に応じて作成することができます。
ユーザーはあなたがしているではない偶然ができ、あなたのデータベースと混乱(あなたが彼らにそれを行うための方法を提供しない限り)
ようにするには、(例えばProduct
またはDetails
)直接基礎となるLINQのエンティティを露出していませんクエリ可能を返します。これは単にクエリを表します。ユーザーが追加の制約(例:where
)を追加すると、クエリが作成され、不要なデータは読み込まれません。
は
あなたはクラスからのみ合理機能を公開することができます - たとえば、あなたはGetProducts
はcategoryID
取るだけの方法を持っている場合、ユーザーは唯一それが不可能から表全体を取得することができた(特定のカテゴリの製品を取得することができますデータベース)
大きなアドバイスありがとうございます。だから、私のProductDaoクラス内にこのメソッドを持たせるのは良い習慣ですか、それとも別のクラスのメソッドであるべきですか? – jaffa