NHibernate使用入门(四)

时间:2021-10-18 22:16:35

Future()返回IEnumerable<>集合

public class Program
{
public static void Main(string[] args)
{
NHibernateProfiler.Initialize();

try
{
var configuration = new Configuration()
.Configure("NHibernate.config");

var factory = configuration.BuildSessionFactory();

using(var s = factory.OpenSession())
{
//Future()与List()的区别在于Future返回的是IEnumerable<>集合,而List()返回的是IList()。
var blogs = s.CreateCriteria<Blog>()
.Future<Blog>();

var last15Posts = s.CreateCriteria<Post>()
.AddOrder(Order.Desc("PostedAt"))
.SetMaxResults(15)
.Future<Post>();

//FutureValue()这是一个非常简单的接口,里面就一个泛型的Value属性,也就是说.FutureValue()这个东西只是装载了一个对应查询类型的对象而已。
//查询总条数的
var commentsCount = s.CreateCriteria<Comment>()
.SetProjection(Projections.RowCount())
.FutureValue<int>();

foreach (var blog in blogs)
{
Console.WriteLine("Blog: {0}", blog.Title);
}

foreach (var post in last15Posts)
{
Console.WriteLine("Post: {0}", post.Title);
}

Console.WriteLine("Comments Count: {0}", commentsCount.Value);


}
}
catch (Exception e)
{
Console.WriteLine(e);
}

Console.ReadKey();
LogManager.Shutdown();
}
}

运行结果如图:

NHibernate使用入门(四)