首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用带有NHibernate命名查询的未映射类

首先,我们需要了解NHibernate命名查询和未映射类的概念。NHibernate是一个.NET平台的对象关系映射(ORM)框架,它允许开发人员将数据库表与.NET类和对象进行映射,从而更容易地处理数据库操作。命名查询是在映射文件中定义的一种查询,可以在代码中重复使用。未映射类是指那些没有映射到数据库表的类。

在使用带有NHibernate命名查询的未映射类时,开发人员可能会遇到一些问题。为了解决这些问题,我们需要了解以下几点:

  1. 未映射类的处理:NHibernate允许开发人员在查询中使用未映射的类,但需要在查询中显式指定要查询的列。这可以通过使用Projections和Transformers来实现。
  2. 命名查询的定义:命名查询可以在映射文件中定义,也可以在代码中定义。在定义命名查询时,需要指定查询的名称、查询语句、参数和返回类型。
  3. 命名查询的调用:在代码中,可以使用NHibernate的Session对象来执行命名查询。这可以通过调用Session的GetNamedQuery方法来实现。
  4. 查询结果的处理:命名查询的结果可以通过多种方式处理,例如将结果转换为列表、将结果转换为单个对象等。这可以通过使用NHibernate的QueryOver和Criteria API来实现。

总之,使用带有NHibernate命名查询的未映射类需要开发人员了解NHibernate的基本概念和使用方法,以及如何处理未映射的类和命名查询。在实际应用中,开发人员可以根据自己的需求和场景选择适当的方法和技术,以实现更高效、更灵活的数据库操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何使用Fluent Nhibernate中的Automapping进行OR Mapping映射

由于在项目中使用了NHibernate来作为ORMapping构建数据访问层,那么就必须要配置Object和DataTable的映射。...使用Fluent NHibernate的最大好处是降低了出错的机会,因为Fluent Nhibernate的配置是使用C#来编写,可以智能感知,而且还能编译,不像原始的XML配置,写错了都不知道。...我们只需要定义好映射的规则,就可以不对每个表和类分别编写映射配置,而是按照规则进行自动的Mapping工作。这样在修改class或者DataTable时,只需要修改类和表即可,不需要再修改配置文件。...要做到Automapping,就一定要定义好严格的命名规范,然后按照规范编写Automapping规则,实现自动化的映射。...(比如CostCenter类对应表COST_CENTER) 类中的主键使用Id命名,表中的主键使用表名+“_ID”的命名方式。

1.1K10

在NHibernate的单表继承模式下通过父类Repository查询子类

(类表继承) 其中单表继承是我个人比较常用比较推荐的做法。...使用单表继承可以不用Join多个表查询效率高,而且在Domain Model的属性提示到父类或者下降到子类时,数据库模型不用更改。...在NHibernate中经常会遇到通过父类的Repository来查询子类的情况,比如现在有一个抽象的Employee对象,下面有OfficeUser和Teacher两个具体的对象,这两个对象都有其特有的属性...我们可以将OfficeUser和Teacher都保存到Employee表中,然后建立了一个EmployeeRepository,使用Employee作为Query的入口,那么如果要查询Employee表中所有的...以上是以最简单了例子说明了如果通过父类查询具体的子类的方法,实际项目中肯定比这个查询要复杂,但是只要记住了这三种查询的要点,结合其他条件就可以写出NHibernate能够理解的查询。

35920
  • Nhibernate_nhibernate与ef区别

    创建映射文件,以告诉NH怎样持久化这些类的属性. 4. 创建NH的配置文件,以告诉NH怎样连接数据库. 5. 使用NH提供的API....步骤3:编写映射文件(Mapping File) 现在我们有了数据库表和.Net类,我们还需要告诉NH怎样在数据库和类之间映射.这就需要映射文件了.最简捷(也是可维护性最好的)方法就是为每一个类编写一个映射文件...,如果你把命名为"XXX.hbm.xml"的映射文件和XXX类文件放在同一目录下,NH会很让 一切变得很轻松.这儿,我们的User.hbm.xml可能会像这样: 的nhibernate数据库,并且使用提供的用户和密码.还会有其他的配置项,你可以参看文档....- 映射文件 æ app.config - 带有Ado.net连接信息的配置文件(你也可以在代码中指定的) æ 一个叫做user的数据库表.

    60230

    如何使用JavaScript选择带有指定类名的元素?

    在前端开发中,我们经常需要通过JavaScript选择页面上的特定元素。特别是当你需要在一个div元素内部选择一个带有特定类名的子元素时,掌握几种常用的选择方法是非常必要的。...本文将结合实际业务场景,带大家了解如何使用JavaScript选择div内部带有特定类名的元素。 1....就是product-list下的第一个带有product-item类名的元素。...使用 document.getElementsByClassName getElementsByClassName 方法可以返回所有带有指定类名的元素集合。...可以使用以上任何一种方法来获取到第一个商品的元素,然后给它添加一个highlight的类名: firstProductItem.classList.add('highlight'); 这样,就可以动态地在页面上添加样式效果了

    11310

    Nhibernate_juan benet

    在数据库中创建把.Net类持久化的对应表. 2. 创建需要被持久化的.Net类. 3. 创建映射文件,以告诉NH怎样持久化这些类的属性. 4....步骤3:编写映射文件(Mapping File) 现在我们有了数据库表和.Net类,我们还需要告诉NH怎样在数据库和类之间映射.这就需要映射文件了.最简捷(也是可维护性最好的)方法就是为每一个类编写一个映射文件...,如果你把命名为”XXX.hbm.xml”的映射文件和XXX类文件放在同一目录下,NH会很让 一切变得很轻松.这儿,我们的User.hbm.xml可能会像这样: 的nhibernate数据库,并且使用提供的用户和密码.还会有其他的配置项,你可以参看文档....– 映射文件 æ app.config – 带有Ado.net连接信息的配置文件(你也可以在代码中指定的) æ 一个叫做user的数据库表.

    38350

    盘点 .NET 比较流行的开源的ORM框架

    支持 Join 查询、Union all 、Subquery 支持配置查询 支持 DbFirst 从数据库导入实体类,或使用生成工具。...开源地址:https://github.com/dotnet/ef6 六、NHibernate(国外) NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。...(又名异步)(V6) 与严格未修饰的 POCO 或归属的几乎 POCO 一起使用。 易于配置,包括开箱即用的流畅配置。...通过使用 DynamicMethod 生成消除 Linq 和快速属性分配来获得出色的性能。 查询语言是好的 ole SQL。 包括一个低摩擦的 SQL 构建器类,使编写内联 SQL变得更加容易。...包括 T4 模板以自动为您生成 POCO 类。(V5) 用于记录异常、安装值转换器和将列映射到没有属性的属性的挂钩。

    4.2K42

    NHibernate 缓存

    一级缓存测试 一级缓存缓存无需配置, 默认支持, 因此, 在使用 session 查询对象, 如果仅仅是根据 id 加载指定的对象, 需要使用 session 的 Get 或 Load 方法, 这样可以充分利用...注意: 如果查询时不想使用一级缓存, 可以 StatelessSession 对象, 和 Session 对象用法一样, 只是该对象没有一级缓存。...也可以在实体类的 hbm 映射文件中配置使用二级缓存, 不过在 hibernate.cfg.xml 文件中统一配置是推荐的做法。...,用来指定二级缓存的区域名,对应于缓存实现的一个命名缓存区域。...从二级缓存读/写数据 Refresh:向二级缓存写数据,想不从二级缓存读数据,通过在配置文件设置 cache.use_minimal_puts从数据库中读取数据时,强制二级缓存刷新 CacheRegion 给查询缓存指定了特定的命名缓存区域

    60911

    C# 数据操作系列 - 12 NHibernate的增删改查

    之前提到NHibernate继承了Hibernate的一些传统:使用XML文件进行配置,这一点也是备受争议。...NHibernate映射文件 对于NHibernate的映射文件有个约定的名字: 类名>.hbm.xml 这里先为大家介绍一下映射文件的格式: 1.1 hibernate-mapping 的说明 的级联风格 auto-import:明确是否可以在查询中使用非限定类名。...assembly:指定映射对象所在的assembly,一般情况指的是项目名称 namespace:所在命名空间 default-access:可选的,默认是property,表示NHibernate的读取数据列的策略...接下来,让我们探索class如何映射成的。 1.2.1 id 任何一个映射都必须声明一个数据表的主键,大多数类也必须有一个唯一标示字段用来区分不同的实例。

    1.1K20

    NHibernate学习笔记之一,Hello world!

    NHibernate是一个面向.NET环境的对象/关系数据库映射框架,主要应用在数据持久层,和其它的ORM框架一样用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...;mapping表示映射NHibernateDemo.WebUI命名空间下的所有类型,包含持久化类以及对应映射文件所在的应用程序集名称。...3、编写实体类(POCO,Plain Old CLR Objects),映射文件包含POCO类映射到一个或者多个数据库表的元数据信息。User.cs文件如下所示。...持久化类的所有的public的属性必须声明为virtual,否则映射不成功。...4、为POCO类编写写一个数据库映射文件,其实User.hbm.xml映射文件包含了对象/关系映射(ORM)所需的元数据。元数据包含持久化类的声明和属性到数据库的映射。

    61120

    使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作

    先写一个简单的给你定义的数据库中添加一条元素的代码:(不使用Nhibernate的) 前提:先把该用的dll文件,添加到引用里面去不然,会连接不成功,之前下载的Connector/Net(选择.Net&...然后我们在工程下面新建两个文件夹:Model文件夹用来存放数据库表类和映射类,还有一个Manger类用来存放对数据库执行增删改查操作的类。...virtual int Age { get; set; }//表中的年龄 } } 2.再在Modle文件下建立一个映射类,名字为MapAPengChao,这个类的代码如下: using...帮助类,使用Nhibernate连接数据库,用来得到sessionFactory,然后使用sessionFactory里面的session去操作数据库,代码如下: using System; using...的类,用来进行增删改查操作,代码如下: 实现查询表中所有姓名的操作: using System; using System.Collections.Generic; using System.Linq

    1.4K30

    NHibernate 缓存

    一级缓存测试 一级缓存缓存无需配置, 默认支持, 因此, 在使用 session 查询对象, 如果仅仅是根据 id 加载指定的对象, 需要使用 session 的 Get 或 Load 方法, 这样可以充分利用...注意: 如果查询时不想使用一级缓存, 可以 StatelessSession 对象, 和 Session 对象用法一样, 只是该对象没有一级缓存。...也可以在实体类的 hbm 映射文件中配置使用二级缓存, 不过在 hibernate.cfg.xml 文件中统一配置是推荐的做法。...,用来指定二级缓存的区域名,对应于缓存实现的一个命名缓存区域。...从二级缓存读/写数据 Refresh:向二级缓存写数据,想不从二级缓存读数据,通过在配置文件设置cache.use_minimal_puts从数据库中读取数据时,强制二级缓存刷新 CacheRegion 给查询缓存指定了特定的命名缓存区域

    44410

    ORM for Net主流框架汇总与效率测试

    ORM框架:Object/Relation Mapping(对象/关系 映射)的缩写,易于理解的模型化数据的方法。简单的说就是把数据库的关系型数据类型转换为用对象型程序控制的框架类型。...今天研究的orm框架如下: 1.NHibernate(使用与介绍:http://www.cnblogs.com/stone_w/archive/2011/09/15/2177830.html) 2.iBatis...以下为10万条数据的查询排行,单位为毫秒(ms)。...缺点:依赖代码生成器生成每个实体类。 iBatis 优点: 效率比较高,尤其是非并发下效果很高,比较稳定。 缺点:配置文件比较多,t-sql在每个配置文件里面写,条件查询比较麻烦。...缺点:操作语法不成熟,不支持t-sql,使用起来不方便,已经很久没有更新了。 ps:大家根据测试的结果自行选择合适的框架。

    93370

    C#——Nhibernate探索

    这里有两个类库;可以分析得出,这两个类库是要被引用的。 类库拥有对应的XML,没找到具体使用该XML的方法。所以暂时不去理他。 NHibernate.pdb应该是没有用的。估计是作者忘记删除了。...但看到.xsd文件,第一时间反应,他们应该是用来帮助开发者,快速生成配置文件用的。为了保险起见,我们上网查询一下。 查询结果: 查询结果是,他们俩是【文件智能提示功能】用的。...上网调查后,发现Nhibernate有Castle框架、LinFu框架、Spring.Net三种。 看起来很复杂,文章有很多,写的又很复杂,于是我放弃调查,直接尝试使用,首先第一步,直接引用类库。...这句话的意思是,映射我创建的那个类库。 我推断,Nherbinate是读这个配置文件,然后到这个程序集里,反射查询那些poco对象。...为什么说是探索之旅呢,因为,我也是首次配置Nhibernate,我平常更多的是使用Entity Framework。 文中使用了一些推断,猜测的词语。那是因为,真的是在推断的。

    50330

    NHibernate总结

    NHibernate不仅仅管理.NET 类到数据库表的映射(包括.NET 数据类型到SQL 数据类型的映射),还提供数据查询和获取数据的方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据的时间...封装Nhibernate底层操作,People.cs为实体类,People.hbm.xml为映射文件(把数据库表People映射到实体类People)。...这个实例我编写了一个辅助类NHibernateHelper 用于创建ISessionFactory并配置ISessionFactory和打开一个新的Session单线程的方法,之后在每个数据操作类可以使用这个辅助类创建...virtual,要不然会报错 (4)     下面我们开始为People实体类进行数据库表映射配置People.hbm.xml NHibernate要知道怎样去加载和存储持久化类的对象。...这正是NHibernate映射文件发挥作用的地方。映射文件包含了对象/关系映射所需的元数据。元数据包含持久化类的声明和属性到数据库的映射。

    94040

    NHibernate详解

    开发的过程: 1.新建一个将要持久化.Net对象的表 2.构建一个需要被持久化的.Net类 3.构建一个可以让NHibernate知道如何持久化对象属性的映射文件...第三步:写映射文件 现在我们有数据表和需要去映射它的.Net类。我们需要一种方式去让NHibernate知道如何从一个映射到另一个。这个任务依赖于映射文件来完成。...最易于管理的办法是为每一个类写一个映射文件,如果你命名它是YourObject.hbm.xml 并且把它放在和类的同一个目录里,NHiberante将会使得事情简单起来。...第一个有趣的标签是class。这里我们将映射类型名称(类名,装配件)到我们数据库中的User表,这里和Hibernate有一点点的不同。你将不得不告诉NHibernate从何处提取对象。...映射文件将成为装配件的一部分。更详细的细节重点将在后面展示。 提示:如果你仅仅是改变映射文件,你不能使用build 而应该Rebuild项目。

    71030
    领券