我的项目遇到了问题。我正在使用带有结构映射的通用存储库和 Fluent NHibernate。一切都很好,但是当涉及到事务和会话管理时,我真的不知道该怎么做。我四处寻找答案,但我真的找不到任何适合我需要的东西。
我在我的应用程序中所做的是让结构映射在收到请求时实例化一个存储库类,如下所示:
internal class RepositoryRegistry : Registry
{
public RepositoryRegistry()
{
For<IRepository<User>>().Use<Repository<User>>();
For<IRepository<Tasks>>().Use<Repository<Tasks>>();
}
}
internal class NHibernateRegistry : Registry
{
public NHibernateRegistry()
{
For<ISessionFactory>()
.Singleton()
.Use(() => new NHibernateSessionFactory().GetSessionFactory());
For<ISession>()
.Singleton()
.Use(x => x.GetInstance<ISessionFactory>().OpenSession());
}
}
public interface IRepository<T>
{
T GetById(int id);
void SaveOrUpdate(T entity);
IList<T> GetAll();
IQueryable<T> Linq();
void Add(T entity);
}
编辑:我已经总结出我需要的东西。我不想将工作单元模式与结构映射一起使用,但我也想要某种可以通过工作单元访问的存储库包装器。
谢谢,詹姆斯福特