Шаблон репозитория, шаблон UoW, простой сеанс NHibernate - PullRequest
1 голос
/ 27 декабря 2011

Существует много дискуссий об использовании Repository pattern, UoW pattern. Я вполне понимаю, когда и почему используется Repository pattern. Скажем так, у меня есть несколько совокупных корней. Что дальше? Какой шаблон / реализацию я предпочитаю? Каковы причины для использования более сложных решений, чем простая сессия NHibernate?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 27 декабря 2011

Шаблон репозитория - это абстракция, которая не является ненужной. Это просто позволяет вам заранее задавать определенные запросы, которые могут использоваться несколько раз по всей системе, и улучшает читаемость imho.

В репозитории используется единица работы (которая уже реализована ISession в NHibernate); это моя точка зрения.

То, что я хотел бы сделать, - это создать несколько методов расширения ISession NHibernate для вашего проекта; который может выглядеть так:

public class ISessionExtensions
{
    public static IEmployeeRepository GetEmployeeRepository( this ISession session )
    {
         return new EmployeeRepository(session);
    }
}

public class EmployeeRepository()
{
    internal EmployeeRepository( ISession s )
    {
    }

    public IEnumerable<Employee> GetEmployeesFromDepartment( Department d )
    {
      ...
    }
}

Затем в своем коде вы можете сделать это:

using( ISession s = _sessionFactory.OpenSession() )
{
    var repository = s.GetEmployeeRepository();
    ...
}
3 голосов
/ 27 декабря 2011

Шаблон репозитория перед NHibernate.Теперь мы применяем шаблон репозитория поверх NHibernate, который в большинстве случаев является ненужной абстракцией.Идея общего хранилища как уровня абстракции над NHibernate заключается в том, что в какой-то момент вы можете переключиться на другой постоянный механизм, такой как Entity Framework.В самом деле?Это возможно?Я думаю, что нет, потому что у вас будет так много спецификаций NH, как кеширование, выборка и т. Д. Для меня простое использование сеанса в порядке.

Здесь Айенде говорит об этом некоторое время
И еще ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...