私はC#のASP.NET MVC3でアプリケーションを開発しています。私のリポジトリメソッドでは、ジョインやその他の複雑な操作を行うことをお勧めしますか?
私は現在、私のADO.NETのEFによって構成さDALとリポジトリクラスMyDBRepository
構築しています:
public class MyDBRepository
{
MyDBEntities myDB;
public MinervaDBRepository()
{
myDB = new MyDBEntities();
}
//methods
}
を私はまだMyDBRepository
によって実行されるクエリの詳細レベルについての不確実ですメソッド。私は、このクエリがリポジトリに適切であることを知っている:を使用したものについて
public IQueryable<Products> GetAllTickets()
{
return myDB.products;
}
しかし、何が他のクラスからメソッドを使用してナビゲーションプロパティやクエリを通じてに参加しますか?例:
この方法は、特定の日付までに却下製品を検索(日付はDBに文字列として格納されている)、および私が作成DateUtilities
クラスを使用:
public IQueryable<Products> GetProductsDismissed(DateTime date)
{
return myDB.products.Where(m => (string.IsNullOrEmpty(m.ProductDismissDate) ||
Equals(m.ProductDismissDate, "-")) ? false :
(DateTime.Compare(date, DateUtilities.ConvertToDateTime(m.ProductDismissDate)) > 0));
}
この方法は、をの結合を実行製品を構成するすべての部分を取得するナビゲーションプロパティを使用して(存在すると仮定多くの関係1):
public IQueryable<Products> GetAllProductParts(int productId)
{
return myDB.products.Where(m => Equals(m.ProductId, productId));
}
リポジトリクラスに実装するか、またはサービスレイヤーに移動する方が良いですか?