当前位置: 首页 > news >正文

网站制作 推荐新鸿儒工业设计网站免费

网站制作 推荐新鸿儒,工业设计网站免费,网站建设模板素材,网络系统的价值跟用户数量的关系本节内容 NHibernate中的查询方法条件查询(Criteria Query)1.创建ICriteria实例2.结果集限制3.结果集排序4.一些说明根据示例查询(Query By Example)实例分析结语上一节#xff0c;我们介绍了NHibernate查询语言的一种#xff1a;NHibernate查询语言(HQL#xff0c;NHiberna…本节内容 NHibernate中的查询方法条件查询(Criteria Query)1.创建ICriteria实例2.结果集限制3.结果集排序4.一些说明根据示例查询(Query By Example)实例分析结语上一节我们介绍了NHibernate查询语言的一种NHibernate查询语言(HQLNHibernate Query Language)这一节介绍一下条件查询(Criteria API)。 NHibernate中的查询方法 在NHibernate中提供了三种查询方式给我们选择NHibernate查询语言(HQLNHibernate Query Language)、条件查询(Criteria APICriteria Query)、(根据示例查询(QBEQuery By Example)是条件查询的一种特殊情况)、原生SQL(Literal SQLT-SQL、PL/SQL)。每个人有不同的喜好和特长可以根据自己的情况选择使用其中的一种或几种。这一节我们介绍条件查询。 条件查询(Criteria Query) HQL极为强大但是有些人希望能够动态的使用一种面向对象API创建查询而不是在.NET代码中嵌入字符串。在NHibernate中提供了一种直观的、可扩展的Criteria API。在我们键入查询语句的时候提供了编译时的语法检查VS提供了强大的智能提示。如果你对HQL的语法感觉不是很舒服的话用这种方法可能更容易。这种API也比HQL更可扩展。 典型用法从ISession接口中创建ICriteria实例对象在这个ICriteria实例对象上设置一个或多个表达式要求ICriteria接口返回需要的列表就是根据表达式从数据库中返回对象。 注意由于篇幅有限我在这里仅仅贴出了数据访问层的代码。测试这些方法的代码就没有贴出来了你可以下载本系列的源代码仔细看看测试这些方法的代码。这些实例我争取写出来可以运行起来大家下载源码看看效果一些数据需要按个人数据库里的数据情况修改。例如查询条件和结果。这节我们在上一节源代码的基础上在数据访问层中新建QueryCriteriaAPI.cs类用于编写条件查询方法在数据访问的测试层新建一QueryCriteriaAPIFixture.cs类用于测试。 1.创建ICriteria实例 使用ISession接口的CreateCriteria方法创建了NHibernate.ICriteria接口一个特定的持久化类的查询实例也可以说ISession是用来制造Criteria实例的工厂。 public IListCustomer CreateCriteria() {ICriteria crit _session.CreateCriteria(typeof(Customer));crit.SetMaxResults(50);IListCustomer customers crit.ListCustomer();return customers; } 例如上面的例子返回Customer对象集合设置最大的集合数量为50条。 2.结果集限制 使用ICriteria接口提供的Add方法添加Restrictions类中约束表达式可以限制一些结果集的作用。 public IListCustomer Narrowing() {IListCustomer customers _session.CreateCriteria(typeof(Customer)).Add(Restrictions.Like(Firstname, YJing%)).Add(Restrictions.Between(Lastname, A%, Y%)).ListCustomer();return customers; } 3.结果集排序 使用ICriteria.Order对结果集排序第二个参数true代表ascfalse代表desc。例如下面例子查询Customer对象按FirstName降序、Lastname升序。 public IListCustomer Order() {return _session.CreateCriteria(typeof(Customer)).Add(Restrictions.Like(Firstname,Y%)).AddOrder(new NHibernate.Criterion.Order(Firstname, false)).AddOrder(new NHibernate.Criterion.Order(Lastname, true)).ListCustomer(); } 4.一些说明 条件查询同样支持关联查询、动态关联抓取(在介绍一对多多对多关系中阐述)投影、聚合和分组离线(detached)查询和子查询是2.0版新增加的内容以后在相关知识中介绍。也可以自行参考NHibernate参考文档13章。 根据示例查询(Query By Example) 根据示例查询(QBEQuery By Example)是条件查询的一种特殊情况NHibernate.Criterion.Example类根据你指定的实例创造查询条件。其典型的用法创建一个Example实例在Example实例上设置值根据Example和设置NHibernate返回其对象集合。 例如下面的例子按照指定Customer查询数据库里的记录 public IListCustomer Query() {Customer customerSample new Customer() { Firstname YJing, Lastname Lee };return _session.CreateCriteria(typeof(Customer)).Add(Example.Create(customerSample)).ListCustomer(); } 你可以自行调整Example使之更实用 public IListCustomer UseQueryByExample_GetCustomer(Customer customerSample) {Example example Example.Create(customerSample).IgnoreCase().EnableLike().SetEscapeCharacter();return _session.CreateCriteria(typeof(Customer)).Add(example).ListCustomer(); } 实例分析 实例1利用CriteriaAPI按Firstname和Lastname查询顾客。 public IListCustomer GetCustomersByFirstnameAndLastname(string firstname, string lastname) {return _session.CreateCriteria(typeof(Customer)).Add(Restrictions.Eq(Firstname, firstname)).Add(Restrictions.Eq(Lastname, lastname)).ListCustomer(); } 测试调用GetCustomersByFirstnameAndLastname方法查询Firstname为“YJingLastname为Lee的顾客判断查询结果数量是否为1。(注在数据库中有符合这一个记录) [Test] public void GetCustomerByFirstnameAndLastnameTest() {IListCustomer customers _queryCriteriaAPI.GetCustomersByFirstnameAndLastname(YJing, Lee);Assert.AreEqual(1, customers.Count); } 实例2利用CriteriaAPI获取顾客ID大于CustomerId的顾客。 public IListCustomer GetCutomersWithIdGreaterThan(int customerId) {return _session.CreateCriteria(typeof(Customer)).Add(Restrictions.Gt(CustomerId, customerId)).ListCustomer(); } 结语 好了通过2篇文章的介绍对NHibernate中的查询语法有了大致了解知道了NHibernate中两种最主要的查询方式还有一种原生SQL查询内容不多请参考NHibernate官方文档吧。多多练习下节将介绍对对象的操作。 本系列链接NHibernate之旅系列文章导航 NHibernate QA 欢迎加入NHibernate中文社区一起讨论NHibernate知识请到NHibernate中文社区下载本系列相关源码。下次继续分享NHibernate转载于:https://www.cnblogs.com/lyj/archive/2008/10/16/1312906.html
http://wiki.neutronadmin.com/news/92730/

相关文章:

  • 建设一个网站怎么赚钱搜狗站长管理平台
  • 网站开发建设好处wordpress添加夜间模式
  • 对电子政务网站建设的建议目前流行的网站开发技术
  • 玩具外贸网站昆明网站建设logovi
  • 网站制作宜昌怎么做?做网站的软件叫什么
  • 开发一个购物平台需要多少钱新网站上线 怎么做seo
  • 自己代码做网站婚纱网站模板免费下载
  • 靖江做网站单位微信微信
  • 福建网站建设培训班中小网站公司做的推广怎么样
  • 金华做网站最专业的公司wordpress相关文章
  • 云南手机网站制作贵阳企业网站排名优化
  • 400电话单页网站网站logoico怎么做
  • 天津省网站制作厂家wordpress有什么好看的主题
  • 建材企业网站推广方案中国新闻社待遇
  • 哪些网站有中文域名WordPress输出当前网址
  • 上海建设工程质量监督站网站最便宜的网站
  • 网站建设客户沟通模块网站多语切换怎么做
  • 农业网站建设方案 ppt模板郑州网站制作专业乐云seo
  • 承接网站开发 app开发开展建设文明网站活动方案
  • 如何做好电商网站平面设计建设网站代理商
  • 免费网站生成软件销售网站模板
  • 建设部网站js网站记住密码怎么做
  • 安徽省建设干部网站网站制作多少钱资讯
  • 企业网站导航代码广州市学校网站建设公司
  • 手机哪个网站好模版网站有源代码吗
  • 网站后台账户密码软件项目管理是什么
  • 百度做网站价格查找手机网站
  • 做知乎网站的图片网站推广 经典案例
  • 免费网站开发合同网站交互式
  • 免费的ai写作网站wordpress 后台 重定向循环