标签: windsor-nhfacility

NHibernate(3.1.0.4000)使用Query <>和NHibernate Facility的NullReferenceException

我有NHibernate的问题,我似乎无法找到任何解决方案.在我的项目中,我有一个简单的实体(批处理),但每当我尝试运行以下测试时,我都会遇到异常.我已经尝试了几种不同的方法来执行类似的查询,但几乎所有的异常(它与执行的LINQ方法不同).

第一次测试:

[Test]
public void QueryLatestBatch()
{
    using (var session = SessionManager.OpenSession())
    {
        var batch = session.Query<Batch>()
            .FirstOrDefault();

        Assert.That(batch, Is.Not.Null);
    }
}
Run Code Online (Sandbox Code Playgroud)

例外:

System.NullReferenceException : Object reference not set to an instance of an object.
at NHibernate.Linq.NhQueryProvider.PrepareQuery(Expression expression, ref IQuery query, ref NhLinqExpression nhQuery)
at NHibernate.Linq.NhQueryProvider.Execute(Expression expression)
at System.Linq.Queryable.FirstOrDefault(IQueryable`1 source)
Run Code Online (Sandbox Code Playgroud)

第二个测试:

[Test]
public void QueryLatestBatch2()
{
    using (var session = SessionManager.OpenSession())
    {
        var batch = session.Query<Batch>()
            .OrderBy(x => x.Executed)
            .Take(1)
            .SingleOrDefault();

        Assert.That(batch, Is.Not.Null);
    }
}
Run Code Online (Sandbox Code Playgroud)

例外:

System.NullReferenceException : Object reference …
Run Code Online (Sandbox Code Playgroud)

nhibernate castle-windsor linq-to-nhibernate oracle11g windsor-nhfacility

8
推荐指数
1
解决办法
1904
查看次数

使用NHibernate Castle Facility延迟装载

我是否必须关闭ISessionCastle ISessionManager为NHibernate 生成的?我该如何处理这些交易ISession呢?我对NHibernate还很陌生.

编辑:我想延迟加载,但我收到此消息:

正在初始化[未能懒惰地初始化角色集合:,没有关闭会话或会话"

这是我继承的通用存储库,用于实现特定的实例.

[Transactional]
public class Repository<TKey, TModel>
    : IRepository<TKey, TModel>
    where TKey : IComparable
    where TModel : class
{
    private readonly ISessionManager _sessionManager;

    protected ISession Session { get { return _sessionManager.OpenSession(); } }

    public Repository(ISessionManager sessionManager)
    {
        _sessionManager = sessionManager;
    }
    #region IRepository<TKey,TModel> Members

    public virtual TModel Select(TKey key)
    {
        using (var session = _sessionManager.OpenSession())
        {
            return session.Get<TModel>(key);
        }
    }

    public virtual IList<TModel> SelectWhere(Func<TModel, bool> query)
    {
        using (var session …
Run Code Online (Sandbox Code Playgroud)

nhibernate castle-windsor castle lazy-loading windsor-nhfacility

5
推荐指数
1
解决办法
6928
查看次数