Мне немного любопытно, какой опыт других разработчиков имеет применение шаблона Repository при программировании в ASP.NET MVC с Entity Framework или NHibernate. Мне кажется, что эта модель уже реализована в ORM. DbContext
и DbSet<T>
в платформе Entity Framework и ISession
в NHibernate. Большинство проблем, упомянутых в шаблоне Repository
, как описано в POEE и DDD - довольно адекватно реализованы этими ORM. Именно эти проблемы:
- Настойчивость
- OO Просмотр данных
- Абсолютная логика доступа к данным
- Логика доступа к запросу
Кроме того, большинство реализаций шаблона репозитория, которые я видел, соответствуют этому шаблону реализации - при условии, что мы разрабатываем приложение для блога.
Реализация NHibernate:
public class PostRepository : IPostRepository
{
private ISession _session;
public PostRepository(ISession session)
{
_session = session;
}
public void Add(Post post)
{
_session.Save(post);
}
// other crud methods.
}
Entity Framework:
public class PostRepository : IPostRepository
{
private DbContext _session;
public PostRepository(DbContext session)
{
_session = session;
}
public void Add(Post post)
{
_session.Posts.Add(post);
-session.SaveChanges();
}
// other crud methods.
}
Мне кажется, что когда мы используем ORM, такие как Nhibernate или Entity Framework, создание этих реализаций репозитория является избыточным. Более того, поскольку эти реализации шаблонов делают не больше, чем то, что уже существует в ORMS, они действуют как шум, чем полезные абстракции OO. Кажется, что использование шаблона репозитория в упомянутой выше ситуации является не чем иным, как саморазвитием самого разработчика, а также большей помпой и церемонией без каких-либо реальных технических преимуществ. Каковы ваши мысли?