Действительно ли необходимо реализовать репозиторий при использовании Entity Framework?

В настоящее время я изучаю 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);
    }
}

Я думаю, что вышеупомянутый контроллер обладает некоторыми положительными свойствами.

  • Его легко протестировать из-за внедрения службы данных.
  • Он использует операторы LINQ, которые запрашивают аннотацию хранение данных не зависящим от реализации способом.

Итак, я не вижу никаких преимуществ от добавления репозитория между контроллером и производным от 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);
    }
}

Я думаю, что указанный выше контроллер обладает некоторыми положительными свойствами.

  • Его легко протестировать из-за внедрения службы данных.
  • ] Он использует операторы LINQ, которые запрашивают абстрактное хранилище данных способом, не зависящим от реализации.

Итак, я не вижу никаких преимуществ от добавления репозитория между контроллером и производным от 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);
    }
}

Я думаю, что указанный выше контроллер обладает некоторыми положительными свойствами.

  • Его легко протестировать из-за внедрения службы данных.
  • ] Он использует операторы LINQ, которые запрашивают абстрактное хранилище данных способом, не зависящим от реализации.

Итак, я не вижу никаких преимуществ от добавления репозитория между контроллером и производным от ObjectContext классом. Что я скучаю?

  • Он использует операторы LINQ, которые запрашивают абстрактное хранилище данных не зависящим от реализации способом.
  • Итак, я не вижу никаких преимуществ от добавления репозитория между контроллером и производным от ObjectContext классом. Что я скучаю?

  • Он использует операторы LINQ, которые запрашивают абстрактное хранилище данных не зависящим от реализации способом.
  • Итак, я не вижу никаких преимуществ от добавления репозитория между контроллером и производным от ObjectContext классом. Что я скучаю? (Извините, для первого поста это было слишком долго)

    6
    задан Ivan Gerken 23 September 2010 в 13:31
    поделиться