码迷,mamicode.com
首页 > Web开发 > 详细

NHibernate3.2学习笔记-几种查询方式

时间:2016-03-28 21:36:31      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:

一、开发环境

数据库:SQLServer2008

编译器:VS2010

.Net版本:.Net Framework 4.0

二、开发过程

1.项目结构

承接上一篇

2.执行sql语句

(1)基本语法
static void ExecuteSql()
{
    string str = "select * from T_Product";
    ISQLQuery query = session.CreateSQLQuery(str).AddEntity(typeof(Product));
    IList<Product> list = query.List<Product>();
    Console.WriteLine(list.Count);
}

3.执行hql语句

(1)基本语法

static void ExecuteHql()
{
    string str = "from Product a where a.Id >:pId";
    IList<Product> list = session.CreateQuery(str).SetInt32("pId", 1).List<Product>();
    Console.WriteLine(list.Count);
}

(2)返回多个不确定类型的值

static void ExecuteHql2()
{
    string str = "select a.Name,count(a.Name)  from Product a group by a.Name";
    //返回的两个不同对象类型,用对象集合保存
    IList<object[]> list = session.CreateQuery(str).List<object[]>();
    foreach (object[] obj in list)
    {
        string msg = string.Format("" + obj[0] + "】出现了【" + obj[1] + "】次");
        Console.WriteLine(msg);
    }
}

(3)返回确定类型的值

static void ExecuteHql3()
{
    string str = "select distinct a.Name from Product a";
    IList<string> list = session.CreateQuery(str).List<string>();
    Console.WriteLine(list.Count);
}

4.执行Linq语句

(1)基本语法

static void ExecuteLinq()
{
    IList<Product> list = session.QueryOver<Product>().Where(a=>a.Id > 1).List();
    decimal maxUnitPrice = (from s in list select s.UnitPrice).Max();
    Console.WriteLine(maxUnitPrice);
}

5.使用Criteria方法

(1)基本语法

static void ExecuteCriteria()
{
    ICriteria criteria = session.CreateCriteria(typeof(Product));
    IList<Product> list = criteria.List<Product>();
    Console.WriteLine(list.Count);
}

(2)常用方法1

static void ExecuteCriteria2()
{
    ICriteria criteria = session.CreateCriteria(typeof(Product));
    criteria.Add(Expression.Lt("Id", 5));
    criteria.Add(Expression.Like("Name", "Apple", MatchMode.Anywhere));
    IList<Product> list = criteria.List<Product>();
    Console.WriteLine(list.Count);
}

(3)常用方法2

static void ExecuteCriteria3()
{
    ICriteria criteria = session.CreateCriteria(typeof(Product));
    criteria.Add(Expression.Between("UnitPrice", 1, 20));
    criteria.Add(Expression.In("Id", new int[] { 1, 2,3, 4,5 }));
    criteria.Add(Expression.Not(Expression.Eq("Id", 5)));
    IList<Product> list = criteria.List<Product>();
    Console.WriteLine(list.Count);
}

(4)使用类

static void ExecuteCriteria4()
{
    ICriteria criteria = session.CreateCriteria(typeof(Product));
    Product model = new Product();
    model.Id = 2;
    model.Name = "Apple";
    model.UnitPrice = 2.60m;
    criteria.Add(Example.Create(model));
    IList<Product> list = criteria.List<Product>();
    Console.WriteLine(list.Count);
}

NHibernate3.2学习笔记-几种查询方式

标签:

原文地址:http://www.cnblogs.com/2star/p/5330338.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!