如何在NHibernate 3.2中实现通用存储库模式和UoW

时间:2012-03-04 16:56:14

标签: asp.net-mvc-3 nhibernate c#-4.0 repository-pattern unit-of-work

我是NHibernate的新手,我试图阻止通用存储库模式工作单元在< em> ASP.NET MVC 3 应用程序。我用Google搜索了标题并找到了新的链接;但是所有这些对我来说都更加复杂。我使用 StructureMap 作为我的 IOC 。你能建议我一些链接或博客文章吗?

2 个答案:

答案 0 :(得分:5)

以下是一些要阅读的内容:

我在最近的项目中使用的实现看起来像:

public interface IRepository<T>
{
    IEnumerable<T> GetAll();
    T GetByID(int id);
    T GetByID(Guid key);
    void Save(T entity);
    void Delete(T entity);
}

public class Repository<T> : IRepository<T>
{
    protected readonly ISession Session;

    public Repository(ISession session)
    {
        Session = session;
    }

    public IEnumerable<T> GetAll()
    {
        return Session.Query<T>();
    }

    public T GetByID(int id)
    {
        return Session.Get<T>(id);
    }

    public T GetByID(Guid key)
    {
        return Session.Get<T>(key);
    }

    public void Save(T entity)
    {
        Session.Save(entity);
        Session.Flush();
    }

    public void Delete(T entity)
    {
        Session.Delete(entity);
        Session.Flush();
    }
}

答案 1 :(得分:1)

查看此解决方案 - https://bitbucket.org/cedricy/cygnus/overview

它是我们在生产MVC 1,2和3应用程序中使用的Repository模式的简单实现。

当然,从那时起我们就已经了解到,我们非常感谢我们的查询直接针对ISession运行。你可以用这种方式控制它们。那和Ayende也没有告诉我们。

谢谢塞德里克!