Несколько вещей о Repository Pattern, которые я просто не понимаю

Я прочитал довольно много тем о том, что такое репозиторий, но меня все еще беспокоит несколько вещей.

Насколько я понимаю, единственная разница между Репозиторием и традиционными уровнями доступа к данным заключается в Репозитории возможностях построения запросов (, т.е. шаблоне объекта запроса). Но при чтении следующих определений шаблона репозитория кажется, что у нас все еще может быть репозиторий , даже если мы не реализуем шаблон объекта запроса :

. а) Из:

Repositories are the single point where we hand off and fetch objects. It is also the boundary where communication with the storage starts and ends.

Я думаю, что приведенная выше цитата предполагает, что Repository является точкой входа в DAL. Другими словами, согласно цитате, потребитель DAL (говорит Сервисный уровень)связывается с DAL через репозиторий . Но вместо этого контекст данных не должен представлять точку входа в DAL (, поэтому репозиторий должен находиться в контексте данных ). ?

б) Из:

The primary thing that differentiates a Repository from a traditional data access layer is that it is to all intents and purposes a Collection semantic – just like IList in.Net

У большинства традиционных DAL также нет методов, которые возвращают коллекцию (, напримерList GetAllCustomers())?Так чем же коллекция -, подобная семантике репозитория , отличается от коллекции -, подобной семантике традиционного DAL?

с) Из:

In a nutshell, the Repository pattern means abstracting the persistence layer, masking it as a collection. This way the application doesn't care about databases and other persistence details, it only deals with the abstraction (which usually is coded as an interface).

Насколько мне известно, приведенное выше определение ничем не отличается от определения традиционного DAL . Таким образом, если бы реализация репозитория выполняла только две функции — наличие коллекции -, подобной семантике, и изоляция объектов предметной области от деталей кода доступа к базе данных — чем бы она отличалась от традиционного DAL? ? Другими словами, должен ли он по-прежнему называться Repository ?

д )Что делает следующий интерфейс интерфейсом репозитория вместо обычного интерфейса DAL ?

Из:

public interface IPostsRepository
    {
        void Save(Post mypost);
        Post Get(int id);
        PaginatedResult List(int skip,int pageSize);
        PaginatedResult SearchByTitle(string title,int skip,int pageSize);
    }

Спасибо

6
задан user1483278 23 July 2012 в 19:03
поделиться