如何使用NHibernate从数据库中获取对象? [英] How to get an object from the database with NHibernate?

查看:79
本文介绍了如何使用NHibernate从数据库中获取对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从NHibernate查询中获取对象.

I'm trying to get an object back from an NHibernate query.

我的方法如下:

public Site GetSiteByHost(string host)
{
    var result = _session.CreateCriteria<Site>()
        .Add(SqlExpression.Like<Site>(g => g.URLName, host));

    return result;
}

问题在于,result是一种HNibernate.ICriteria.

the problem is, result is a type of HNibernate.ICriteria.

如何获取返回的Site对象?

如果我是用LINQ to SQL来做的,那就像是.FirstOrDefault()一样,但是NHibernate无法使用...或者是吗?!?!

If I was doing this with LINQ to SQL it'd be something like .FirstOrDefault() but that's not available with NHibernate... or is it?!?!

推荐答案

在调用FirstOrDefault之前,您需要先执行查询(通过在条件上调用List<T>()).请注意,此查询可能返回多个对象:

You need to first execute the query (by calling List<T>() on the criteria) before calling FirstOrDefault. Notice that this query might return multiple objects:

IEnumerable<Site> sites = _session
    .CreateCriteria<Site>()
    .Add(SqlExpression.Like<Site>(g => g.URLName, host))
    .List<Site>();

您可以选择第一个:

Site result = sites.FirstOrDefault();

或直接:

public Site GetSiteByHost(string host)
{
    return _session
        .CreateCriteria<Site>()
        .Add(SqlExpression.Like<Site>(g => g.URLName, host))
        .List<Site>()
        .FirstOrDefault();
}

这篇关于如何使用NHibernate从数据库中获取对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆