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

如何在NHibernate中利用外键引用表的属性过滤结果

在NHibernate中,可以利用外键引用表的属性过滤结果,可以通过使用过滤器(Filter)来实现。

过滤器是一种在查询过程中应用额外条件的机制。它可以基于外键引用表的属性来过滤查询结果,以便只返回满足条件的数据。

以下是在NHibernate中利用外键引用表的属性过滤结果的步骤:

  1. 定义过滤器条件:首先,需要在映射文件中定义过滤器条件。在相关的类映射文件中,使用<filter-def>元素定义过滤器的名称和过滤器条件。例如:
代码语言:xml
复制
<filter-def name="MyFilter" condition="SomeColumn = :someValue" />

在上述示例中,MyFilter是过滤器的名称,SomeColumn是外键引用表的属性,:someValue是过滤器的参数。

  1. 启用过滤器:在查询之前,需要启用过滤器。可以通过调用ISession.EnableFilter方法来启用过滤器。例如:
代码语言:csharp
复制
session.EnableFilter("MyFilter").SetParameter("someValue", someValue);

在上述示例中,MyFilter是过滤器的名称,someValue是过滤器的参数值。

  1. 执行查询:在启用过滤器后,可以执行查询操作。查询将会自动应用过滤器条件,并返回满足条件的结果。
代码语言:csharp
复制
var results = session.Query<Entity>().ToList();

在上述示例中,Entity是需要查询的实体类。

通过以上步骤,就可以在NHibernate中利用外键引用表的属性过滤结果。

NHibernate是一个开源的对象关系映射(ORM)框架,它提供了强大的持久化能力,可以将对象映射到数据库表中。NHibernate支持多种数据库,并提供了丰富的查询和持久化功能。

NHibernate官方网站:https://nhibernate.info/

腾讯云相关产品推荐:腾讯云数据库TencentDB、腾讯云服务器CVM、腾讯云容器服务TKE、腾讯云对象存储COS等。你可以通过腾讯云官方网站获取更多关于这些产品的详细信息和文档。

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

相关·内容

Django学习-第七讲:django 常用字段、字段属性关系、操作

关系 在MySQL有两种引擎,一种是InnoDB,另外一种是myisam。如果使用是InnoDB引擎,是支持约束存在使得ORM框架在处理关系时候异常强大。...第一个参数是引用是哪个模型,第二个参数是在使用引用模型数据被删除了,这个字段该如何处理,比如有CASCADE、SET_NULL等。这里以一个实际案例来说明。...因此在底层,Django为Article添加了一个属性名_id字段(比如author字段名称是author_id),这个字段是一个,记录着对应作者主键。...即只要这条数据引用那条数据,那么就不能删除外那条数据。 3.SET_NULL:设置为空。如果那条数据被删除了,那么在本条数据上就将这个字段设置为空。...那么将会获取SET函数值来作为这个值。SET函数可以接收一个可以调用对象(比如函数或者方法),如果是可以调用对象,那么会将这个对象调用后结果作为值返回回去。

3.9K30

Django创建、字段属性简介、脏数据概念、子序列化

反过来先操作B后操作A,更满足逻辑思维,一样可以执行。通过逻辑将A、B进行连查询,不会有任何异常。两张建立了一对一字段,在A,那么先往B写数据就更合理。...假设图书管理系统书、出版社、作者、作者详细信息四张之间关系如下: """ 关系 1)Book 和 Publish 一对多:在多一方 Book 2)Book 和 Author 多对多:在查询频率高一方...更合理) """ Django orm中外字段属性详解 在建之前我们对外字段属性进行了解: 1)related_name在外设置反向查询字段名:正向找字段名,反向找related_name...,将两张设置为级联,并将反向查询字段名设置为detail 数据库脏数据介绍 数据库中常见并发操作所带来了一致性问题包括:丢失修改,不可重复读,读“脏”数据,幻读。...如果涉及到通过进行跨查询,然后再将查询数据反序列化到前台就需要用到子序列化,比如下面的例子:我们查询出版社信息时候连带将book该出版社所出版过书名一并查出来。

4.3K30

NHibernate关于Inverse理解和使用

默认使用Order属性作为有效关联,换句话说,只需要把OrderItem一个个加入到OrderItems集合即可,最终结果不需要关心OrderItem引用Order到底是什么或者为空。...以上都是插入过程,接下来还要进行更新操作,保证数据库与对象Department设置Users保持一致,所以Update每个User即可。...对应,在Code也需要设置OrderItem对Order引用。 Inverse更大用处是在ManyToMany时候。...语句,当然如果把C#代码6行和7行去掉,结果也是正确,因为现在系统只认EmpAwards集合了。...总结: Inverse用于设置双向关联时Nhibernate在设置时依赖对象,默认Inverse=False,一对多时表示依赖一端集合,如果为True表示依赖多段对象对一端对象引用

44330

One to One 数据库模型设计与NHibernate配置

首先,关系数据库中使用来表示一对多,使用中间和两边来表示多对多,而一对一的话有三种表示方式:一种是使用相同主键值,第二种是使用单边,第三种就是使用双边外。...就是说明这个主键与另一个主键建立约束,也就是说在生成SQL脚本时,会为这个创建,如果不加,是不会创建。...在主键关联情况下,如果从主表移除从引用,这个时候保存主表,是不会删除从,也不会删除这个一对一关系。...PropertyRef(r => r.Classroom); ApplyFilter("IS_DELETED = :DeleteFlag"); } } 这里两个只需要有一个持有对方主键作为即可...,我们可以在CLASS添加CLASSROOM_ID来作为,也可以在CLASSROOM添加CLASS作为

45620

对象继承关系在数据库实现方式和PowerDesigner设计

在面向对象编程,使用对象继承是一个非常普遍做法,但是在关系数据库管理系统RDBMS,使用表示实体()之间关系,那么对于继承关系,该怎么在RDBMS中表示呢?...不建立父对象,将父对象所有属性转移到子对象,为每个子对象建立对于。...在一个宽列出所有父对象和子对象属性,同时用一个标识列表示该行数据存储是哪个子类数据。...3.类继承。 对父对象和每个子对象建立一个对应,然后在子表设置该子表主键为与父关联。...如图所示: 生成数据库如图所示: 这里可以看到,Teacher主键和Student主键同时又是该,连接到Person

71210

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

接下来,让我们探索class如何映射成。 1.2.1 id 任何一个映射都必须声明一个数据主键,大多数类也必须有一个唯一标示字段用来区分不同实例。...class="generatorClass"/> name : 对应属性名 type:对应NHibernate类型 column:列名 generator:主键生成器,如果不需要参数可以直接在..." type="typename" /> name :类里属性名 column:对应数据列名 type:数据库类型 1.2.3 many-to-one 在Nhibernate...,多对一配置是在一一端,表示该类有一个导航。...,不同地方在于一对一需要在双方映射关系里均要维护,在有/实体 添加 constrained=“true”。

1.1K20

NHibernate介绍「建议收藏」

图1 添加对NHibernate引用 3....相比较而言,有些ORM解决方案需要特殊属性,或者是基于模型对象,这些对象又是从特定基类中继承而来。 在NHibernate不用特殊修饰就可以让对象和持久化层交互。...要注意是所有需要持久化属性必须是虚拟,并且要开启延迟加载,所有数据模型类公共方法必须是虚拟,哪怕它们并没有包含到映射文件。 通常来讲,最好把所有的属性都设置为虚拟。...class元素表示到单个POCO映射。name表示上面的程序集和命名空间中类名,table属性告诉NHibernate数据库哪个或者视图将被映射。...id元素告诉NHibernate哪个数据库字段和对应对象作为一个唯一来使用。在本例,我们使用Id这个字段。 generator元素告诉NHibernate怎样给新实体来创建唯一ID。

63120

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

,MySQL-FRONT ,Connector/Net(选择.Net&Mono) Nhibernate包可以在VS2015下载 ,对MySql操作,我用是MySQL-FRONT,注意要想实现和数据库链接...先写一个简单给你定义数据库添加一条元素代码:(不使用Nhibernate) 前提:先把该用dll文件,添加到引用里面去不然,会连接不成功,之前下载Connector/Net(选择.Net&...Nhibernate包来实现一个很简单对数据增删改查操作,这一次需要用到我们之前下载Nhibernate包里面的文件,全部dll文件引入之后,“引用”下面应该是这样: ?...不要少任何一个,好了然后我还是利用刚才创建数据库,先完善一下,完善和如下图 ?...int Id { get; set; }//主键 public virtual string Name { get; set; }//名字 public

1.4K30

Fluent NHibernate之旅(三)-- 继承

经过了“开篇”和“简单映射”两篇文章,相信大家对Fluent NHibernate 有了一定了解了,FluentNHibernate实际就是对 NHibernate 映射一定扩展,我们能完全利用强类型...从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前代码,我会另外进行说明 继承 在OOP,继承作为OO重要特性,如果NHibernate没有对它支持,...,一定看到过了,其实就是把父类、子类所有属性放到一个,这样做好处就是我们不需要建立其他,一张表格全搞定,但缺点也显而易见,在属性情况下或许没有什么,但是多了以后,我们维护、扩展就变得相对麻烦...Table per subclass 在这种方式,一个父类包括了一些共同属性,子类除了主键,就只有属于自己属性。...我们测试代码,同第一种方式,直接看测试结果: ?

65480

NHibernate联合主键详细示例

使用NHibernate实现一对多,多对一关联很是简单,可如果要用复合主键实现确实让人有些淡淡疼。虽然很淡疼但还是要去抹平这个坑,在下不才,愿意尝试。...以示例进入正文,源码下载地址: 一、数据关系图 很明显,他是一个自引用数表,实现无限级树结构存储。...,与联合主键共用了一个字段GroupNumber,导致在NHibernate做映射转换时候会多计算出一个需要填充值,但SqlParameterCollection又少一个位置。...优化代码如下: //与联合主键不要共用字段 [ManyToOne(0, Name = "Parent", ClassType = typeof(Foo))] [Column(1, Name = "...Null 联合主键与联合字段不能重复,也不能共用 注意重载GetHashCode和Equals方法 GetHashCode返回实例惟一标识 Equals判断是否相同实例具体实现

1.5K80

深度长文探讨Join运算简化和提速

SQLJOIN 二. 等值JOIN剖析 1. 关联 2. 同维 3. 主子表 三. JOIN语法简化 1.属性化 2.同维等同化 3.子表集合化 四. 维度对齐语法 五....我们把字段理解成维记录后,维字段被理解为属性,department.manager即是“所属部门经理”,而这个字段在department仍然是个,那么它对应维表记录字段可以继续理解为它属性...这种对象式理解方式称为属性化,显然比笛卡尔积过滤理解方式要自然直观得多。...主子表关系是不对等,不过两个方向引用都有意义,上面谈了从主表引用子表情况,从子表引用主表则和类似。...无非就是属性(字段)稍复杂了一些:可能有子属性字段指向引用其字段),子属性可能还有子属性(多层),有些字段取值是集合而非单值(子表看作为主表字段)。

43710

NHibernate学习笔记之一,Hello world!

2、新建项目并添加引用,将NHibernate-3.3.0.GA-bin“Iesi.Collections.dll”与“NHibernate引用到项目中,如图2所示复制Configuration_Templates...文件夹对应数据库配置文件,这里使用MSSQL,所以复制“MSSQL.cfg.xml”,并对NHibernate配置信息适当修改 。...持久化类所有的public属性必须声明为virtual,否则映射不成功。...,该文件必须输出到Bin目录,否则会报错“xxx is not mapped”,如图3所示具体方法是:选择User.hbm.xml文件->属性->生成操作,设置这个属性值为“嵌入资源” 图3 5...、定义NHibernateHelper帮助类,Isession是NHibernate工作单元,它是一个持久化管理器,我们通过ISession来从数据库存取数据。

58120

NHibernate总结

NHibernate不仅仅管理.NET 类到数据库映射(包括.NET 数据类型到SQL 数据类型映射),还提供数据查询和获取数据方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据时间...,其中People实体类字段要设置为virtual。每个文件详细代码在下面介绍 (2)     在NH.Data层引用Nhibernate相关DLL ?...这正是NHibernate映射文件发挥作用地方。映射文件包含了对象/关系映射所需元数据。元数据包含持久化类声明和属性到数据库映射。...我们可以在People.hbm.xml点击右键选择属性修改该文件生成操作 (5)     NHData.cs对库People进行增删改查 现在完事具备只欠东风了,开始我们数据库CRUD操作,在看该文件代码时...sda.Fill(dt); return dt.ToList(); } } 4、测试 在NHibernateSample引用

90040

Flask数据库过滤器与查询集

,比如模型与模型之间一种关联,根据角色查询属于这个角色用户有哪些 # 这里设计不像是根据实际情况考虑,而根据模型考虑 # User 是让role对象可以获得user属性...添加到address模型person_id列被定义为,就是这个建立起了联系。传给db.ForeignKey()参数’person_id’表明,这一列值是person中行id值。...大多数情况下,db.relationship()都能自行找到关系,但有时却无法决定把哪一列作为。...如果无法决定,你就要为db.relationship()提供额外参数,从而确定所用,常用配置选项如下所示: backref:在关系另一个模型添加反向引用 primary join:明确指定两个模型之间使用联结条件...删除对象时,默认层叠行为是把对象联接所有相关对象设为空值。但在关联,删除记录后正确行为应该是把指向该记录实体也删除,因为这样能有效销毁联接。

6.8K10

MySQL8.0数据库基础教程(二) - 理解关系

例如,可能有一个有关作者信息名为authors(关系Relation)。每行(属性Attribute)都包含特定类型信息,作者姓氏。...每个有且只能有一个主键。 2.3.2 参照完整性 又称引用完整性,是数据属性,用以表明引用有效。参照完整性不允许关系中有不存在实体引用。...(Foreign Key)代表了两个之间关联关系 比如员工属于某个部门;因此员工存在部门编号字段,引用了部门部门编号字段。...对于引用,被引用数据必须存在,员工不可能属于一个不存在部门;删除某个部门之前,也需要对部门员工进行相应处理。 2.3.3 用户定义完整性 基于业务需要自定义约束。...SQL 查询可以完成各种数据操作,例如过滤转换、分组汇总、排序显示等;但是它们本质上都是针对表操作,结果也是。 不仅仅是查询语句,SQL 插入、更新和删除都以集合为操作对象。

89431

MySQL8.0数据库基础教程(二)-理解关系

例如,可能有一个有关作者信息名为authors(关系Relation)。每行(属性Attribute)都包含特定类型信息,作者姓氏。...每个有且只能有一个主键。 2.3.2 参照完整性 又称引用完整性,是数据属性,用以表明引用有效。参照完整性不允许关系中有不存在实体引用。...(Foreign Key)代表了两个之间关联关系 比如员工属于某个部门;因此员工存在部门编号字段,引用了部门部门编号字段。...对于引用,被引用数据必须存在,员工不可能属于一个不存在部门;删除某个部门之前,也需要对部门员工进行相应处理。 2.3.3 用户定义完整性 基于业务需要自定义约束。...SQL 查询可以完成各种数据操作,例如过滤转换、分组汇总、排序显示等;但是它们本质上都是针对表操作,结果也是。 不仅仅是查询语句,SQL 插入、更新和删除都以集合为操作对象。

82221

NHibernate详解

开发过程: 1.新建一个将要持久化.Net对象 2.构建一个需要被持久化.Net类 3.构建一个可以让NHibernate知道如何持久化对象属性映射文件...第一个有趣标签是class。这里我们将映射类型名称(类名,装配件)到我们数据库User,这里和Hibernate有一点点不同。你将不得不告诉NHibernate从何处提取对象。...简要看一下,你将发现NHibernate所要做工作。name属性值正是我们.Net 类属性,column属性值将是我们数据库里字段。...type属性是可选(如果你不标明,NHibernate利用反射进行最佳推测)。...你数据库里有一张User。 现在可以在你代码恰当简洁使用NHibernate。简化版本如下 1. 创建一个Configuration对象 2.

57330

MySQL8.0数据库基础教程(二)-理解关系

例如,可能有一个有关作者信息名为authors(关系Relation)。每行(属性Attribute)都包含特定类型信息,作者姓氏。...每个有且只能有一个主键。 2.3.2 参照完整性 又称引用完整性,是数据属性,用以表明引用有效。参照完整性不允许关系中有不存在实体引用。...(Foreign Key)代表了两个之间关联关系 比如员工属于某个部门;因此员工存在部门编号字段,引用了部门部门编号字段。...对于引用,被引用数据必须存在,员工不可能属于一个不存在部门;删除某个部门之前,也需要对部门员工进行相应处理。 2.3.3 用户定义完整性 基于业务需要自定义约束。...SQL 查询可以完成各种数据操作,例如过滤转换、分组汇总、排序显示等;但是它们本质上都是针对表操作,结果也是。 不仅仅是查询语句,SQL 插入、更新和删除都以集合为操作对象。

1.1K11
领券