如何使用NHibernate从数据库中获取对象? [英] How to get an object from the database with NHibernate?
本文介绍了如何使用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屋!
查看全文