Nhibernate 无存储库的通知数据访问模式

Nhibernate 无存储库的通知数据访问模式,nhibernate,repository-pattern,data-access-layer,Nhibernate,Repository Pattern,Data Access Layer,我想直接从应用程序服务访问ISession(不使用repository()),但应用程序服务单元测试很难,Nhibernate数据访问代码增加了代码的复杂性(没有存储库模拟,我不想模拟存储库或类似sqllite的内存数据库进行测试) 有没有从服务层访问ISession的有效方法?我使用sessionHelper,它基本上持有ISessionFactory,然后有如下方法: public T WrapQueryInTransaction<T>(Func<ISession,

我想直接从应用程序服务访问ISession(不使用repository()),但应用程序服务单元测试很难,Nhibernate数据访问代码增加了代码的复杂性(没有存储库模拟,我不想模拟存储库或类似sqllite的内存数据库进行测试)


有没有从服务层访问ISession的有效方法?

我使用sessionHelper,它基本上持有ISessionFactory,然后有如下方法:

    public T WrapQueryInTransaction<T>(Func<ISession, T> query)
    {
        using (var tx = Session.BeginTransaction())
        {
            try
            {
                var result = query(Session);
                tx.Commit();
                return result;
            }
        }
    }
public T WrapQueryInTransaction(Func查询)
{
使用(var tx=Session.BeginTransaction())
{
尝试
{
var结果=查询(会话);
tx.Commit();
返回结果;
}
}
}
然后,我有类似的方法来实现公共功能——即xxxUpdaters,它基本上加载有问题的对象,进行更新,然后再次关闭ISession

然后查询的用法如下所示:

var entities = _sessionHelper.WrapQueryInTransaction(s => s.QueryOver<SomeEntity>().List());
var entities=\u sessionHelper.WrapQueryInTransaction(s=>s.QueryOver().List());
对于复杂的查询,我将它们封装在一个查询类中,该类也可以在sessionHelper中抛出


它对我很有用-希望你能使用它。

我使用了一个sessionHelper,它基本上持有ISessionFactory,然后有如下方法:

    public T WrapQueryInTransaction<T>(Func<ISession, T> query)
    {
        using (var tx = Session.BeginTransaction())
        {
            try
            {
                var result = query(Session);
                tx.Commit();
                return result;
            }
        }
    }
public T WrapQueryInTransaction(Func查询)
{
使用(var tx=Session.BeginTransaction())
{
尝试
{
var结果=查询(会话);
tx.Commit();
返回结果;
}
}
}
然后,我有类似的方法来实现公共功能——即xxxUpdaters,它基本上加载有问题的对象,进行更新,然后再次关闭ISession

然后查询的用法如下所示:

var entities = _sessionHelper.WrapQueryInTransaction(s => s.QueryOver<SomeEntity>().List());
var entities=\u sessionHelper.WrapQueryInTransaction(s=>s.QueryOver().List());
对于复杂的查询,我将它们封装在一个查询类中,该类也可以在sessionHelper中抛出

它对我有用-希望你能使用它