我是NHibernate
的新手,我试图阻止通用存储库模式和工作单元在< em> ASP.NET MVC 3 应用程序。我用Google搜索了标题并找到了新的链接;但是所有这些对我来说都更加复杂。我使用 StructureMap 作为我的 IOC 。你能建议我一些链接或博客文章吗?
答案 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也没有告诉我们。
谢谢塞德里克!