Я занимаюсь разработкой приложения в ASP.NET MVC3 на C #.
В настоящее время я создаю свой DAL , состоящий из ADO.NET EF и класса репозитория MyDBRepository
:
public class MyDBRepository
{
MyDBEntities myDB;
public MinervaDBRepository()
{
myDB = new MyDBEntities();
}
//methods
}
Я все еще не уверен в степени детализации запросов, выполняемых методами MyDBRepository
. Я знаю, что этот запрос уместен в репозитории:
public IQueryable<Products> GetAllTickets()
{
return myDB.products;
}
А как насчет тех, кто использует , присоединяет через свойства навигации или запрашивает методы из других классов ? Примеры:
Этот метод извлекает продукты, отклоненные до определенной даты (дата хранится в виде строки в БД), и использует созданный мной класс 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));
}
Они должны быть реализованы в Repository class или лучше (один или оба) перейти на Service Layer ?