В настоящее время я изучаю MVC и EF и довольно часто вижу в статьях по тем предметам, что контроллер манипулирует данными через объект репозитория вместо прямого использования LINQ to Entities.
Я создал небольшое веб-приложение для проверки некоторых идей. Он объявляет следующий интерфейс как абстракцию хранилища данных
public interface ITinyShopDataService
{
IQueryable<Category> Categories { get; }
IQueryable<Product> Products { get; }
}
Затем у меня есть класс, который наследуется от сгенерированного класса TinyShopDataContext (унаследованный от ObjectContext) и реализует ITinyShopDataService.
public class TinyShopDataService : TinyShopDataContext, ITinyShopDataService
{
public new IQueryable<Product> Products
{
get { return base.Products; }
}
public new IQueryable<Category> Categories
{
get { return base.Categories; }
}
}
Наконец, контроллер использует реализацию ITinyShopDataService для получения данные, например, для отображения продуктов определенной категории.
public class HomeController : Controller
{
private ITinyShopDataService _dataService;
public HomeController(ITinyShopDataService dataService)
{
_dataService = dataService;
}
public ViewResult ProductList(int categoryId)
{
var category = _dataService.Categories.First(c => c.Id == categoryId);
var products = category.Products.ToList();
return View(products);
}
}
Я думаю, что вышеупомянутый контроллер обладает некоторыми положительными свойствами.
Итак, я не вижу никаких преимуществ от добавления репозитория между контроллером и производным от ObjectContext классом. Что я скучаю? контроллер использует реализацию ITinyShopDataService для получения данных, например, для отображения продуктов определенной категории.
public class HomeController : Controller
{
private ITinyShopDataService _dataService;
public HomeController(ITinyShopDataService dataService)
{
_dataService = dataService;
}
public ViewResult ProductList(int categoryId)
{
var category = _dataService.Categories.First(c => c.Id == categoryId);
var products = category.Products.ToList();
return View(products);
}
}
Я думаю, что указанный выше контроллер обладает некоторыми положительными свойствами.
Итак, я не вижу никаких преимуществ от добавления репозитория между контроллером и производным от ObjectContext классом. Что я скучаю? контроллер использует реализацию ITinyShopDataService для получения данных, например, для отображения продуктов определенной категории.
public class HomeController : Controller
{
private ITinyShopDataService _dataService;
public HomeController(ITinyShopDataService dataService)
{
_dataService = dataService;
}
public ViewResult ProductList(int categoryId)
{
var category = _dataService.Categories.First(c => c.Id == categoryId);
var products = category.Products.ToList();
return View(products);
}
}
Я думаю, что указанный выше контроллер обладает некоторыми положительными свойствами.
Итак, я не вижу никаких преимуществ от добавления репозитория между контроллером и производным от ObjectContext классом. Что я скучаю?
Итак, я не вижу никаких преимуществ от добавления репозитория между контроллером и производным от ObjectContext классом. Что я скучаю?
Итак, я не вижу никаких преимуществ от добавления репозитория между контроллером и производным от ObjectContext классом. Что я скучаю? (Извините, для первого поста это было слишком долго)