UOW + репозиторий для классического ado.net с MVC - PullRequest
0 голосов
/ 08 февраля 2012

Я прочитал два вопроса от stackoverflow.com

  1. Все еще используется классический ADO.NET?
  2. Использование ASP.Net MVC с классическим ADO.Net

Я очень ценю их обоих.
Мне настолько нравится шаблон проектирования репозитория, что я хотел бы использовать его в своем проекте, использующем ASP.net MVC и Classic Ado.net.

Выше вопрос № 2 объяснил, как можно использовать шаблон репозитория и классические технологии ado.net.

Я хотел бы знать одну вещь:Можно ли использовать шаблон Repository, который сочетается с Unit of work, когда речь идет о классических технологиях ado.net.

Может ли кто-нибудь дать мне какие-либо ссылки по этому поводу?

Если естьссылки только для Repository + Classic Ado.net, тогда дайте мне знать и эту ссылку.

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Действительно возможно объединить UoW, Repository и «классический» ADO.NET.

Однако вашему UoW нужно будет добраться до соответствующего репозитория на основе типа сущности.Вы можете сделать так, чтобы ваши репозитории реализовали общий интерфейс.Например:

public interface IRepository<T>
{
    void Add(T instance);
    T Get(Guid id);
    void Remove(Guid id);
    void Remove(T instance);
}

Поскольку каждое UoW является отдельным экземпляром, вам нужно использовать фабрику.Затем эта фабрика либо внедрит репозитории в UoW, либо предоставит ему некоторый экземпляр IRepositoryProvider, который может вернуть соответствующий репозиторий в зависимости от типа.Концептуально:

public interface IRepositoryProvider
{
    IRepository<T> Get<T>();
}

Это очень широких штрихов, поэтому я надеюсь, что это имеет смысл.

2 голосов
/ 08 февраля 2012

IMO, если вы хотите использовать Repository и UoW, нет причин использовать «классический» ADO.Net.Различные платформы ORM реализуют шаблоны Repository + UoW для вас, вы просто подключаете их к своим приложениям (при условии, что ваше приложение разработано на основе этих шаблонов).

Я бы использовал классический ADO.Net только тогда, когда я не не хочет использовать шаблоны репозитория / UoW (например, шаблон сценария транзакции).

...