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

nHibernate:同一张表的2个关系倒置

nHibernate是一个开源的对象关系映射(ORM)框架,它提供了一种将对象模型与关系数据库之间进行映射的方式。它允许开发人员使用面向对象的方式来操作数据库,而不需要直接编写SQL语句。

在nHibernate中,同一张表的两个关系倒置是指在数据库中存在两个表,它们之间的关系是倒置的。通常情况下,两个表之间的关系是通过外键来建立的,其中一个表的外键指向另一个表的主键。但是在某些情况下,我们可能需要将这种关系倒置,即一个表的外键指向另一个表的非主键列。

这种关系倒置的应用场景可以是多对一的关系,例如一个订单可以对应多个商品,而每个商品只属于一个订单。在这种情况下,我们可以将订单表的外键指向商品表的商品ID列,从而实现关系的倒置。

对于nHibernate来说,处理同一张表的两个关系倒置可以通过配置映射文件来实现。在映射文件中,我们可以指定表之间的关系以及外键的映射方式。具体的配置可以参考nHibernate的官方文档。

腾讯云提供了一系列的云计算产品,其中与数据库相关的产品包括云数据库MySQL、云数据库SQL Server等。这些产品可以帮助开发人员快速搭建和管理数据库,提供高可用性和可扩展性的解决方案。您可以通过腾讯云官方网站了解更多关于这些产品的详细信息和使用指南。

nHibernate的官方文档:nHibernate官方文档

腾讯云云数据库MySQL产品介绍:腾讯云云数据库MySQL

腾讯云云数据库SQL Server产品介绍:腾讯云云数据库SQL Server

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

相关·内容

NHibernate详解

大家好,又见面了,我是你们朋友全栈君。 什么是NHibernateNHibernate 是一个基于.Net 针对关系型数据库对象持久化类库。...Nhibernate 来源于非常优秀基于JavaHibernate 关系型持久化工具。 NHibernate 从数据库底层来持久化你.Net 对象到关系型数据库。...假设你正在为你网站开发一个基本用户管理子系统。我们将使用如下User(假定你已经设置好一个数据库—在例子里我称它为NHibernate)。...最易于管理办法是为每一个类写一个映射文件,如果你命名它是YourObject.hbm.xml 并且把它放在和类同一个目录里,NHiberante将会使得事情简单起来。...你数据库里有一User。 现在可以在你代码中恰当简洁使用NHibernate。简化版本如下 1. 创建一个Configuration对象 2.

61030

NHibernate教程

大家好,又见面了,我是你们朋友全栈君。 一、NHibernate简介 在今日企业环境中,把面向对象软件和关系数据库一起使用可能是相当麻烦、浪费时间。...NHibernate是一个面向.Net环境对象/关系数据库映射工具。...NHibernate除了能将一映射为一个对象,还可以将关系变为对象属性。例如学生和课程间多对多关系就可以转化为学生类中一个课程集合属性。...创建一个用于测试 这里需要创建3,分别用于保存:学生、课程、选课信息。可以用Sql语句来创建,也可以用其他方式创建。...含有关系指的是像学生这样,除了保存学生基本信息,还希望把选课信息保存到学生类中。

34310

Nhibernate入门与demo

本篇文章阅读对象是:Nhibernate初学者!如果你是Nhibernate研究者或者已经很熟练运用Nhibernate请不吝赐教,对本文不足之处进行指教。      带着问题去学习!...3、怎么搭建Nhibernate?      4、怎么使用Nhibernate?      好,我们就带着这几个问题开始我们Nhibernate旅程。    ...先看一经典图:      ORM:对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型表示对象映射到基于SQL 关系模型数据结构中去...先看项目整体图,作为初学demo 没有层次,没有优化,只是作为入门一个简单介绍!      第一步:设计数据库中。建立一个User。...然后对应数据库名。设置延迟加载为false。具体可以参考Nhibernate官方文档。 3、一定要将这个文件属性:生成操作设置为嵌入资源!

33130

Nhibernate_nhibernate与ef区别

NHibernate是一个基于.Net,用于关系数据库对象持久化类库.它是著名Hibernate.Net版本....NHibernate用于把你.Net对象持久化到底层关系数据库中.你完全不用自己编写Sql语句去操作这些对象,NH会代替你做.你代码里面只需要关心这些对象,NH生成sql语句并能为你取到正确东西...步骤1:创建数据库 我们正在做是一个非常简单NH示例.在这个例子里面,我们实现一个基本用户管理子系统.我们将会使用一个user(sql server 2000): use NHibernate...,如果你把命名为"XXX.hbm.xml"映射文件和XXX类文件放在同一目录下,NH会很让 一切变得很轻松.这儿,我们User.hbm.xml可能会像这样: <?...Configuration对象知道所有在.Net类和后端数据库之间映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly("NHibernate.Demo.QuickStart

56930

NHibernate学习笔记之一,Hello world!

NHibernate是一个面向.NET环境对象/关系数据库映射框架,主要应用在数据持久层,和其它ORM框架一样用来把对象模型表示对象映射到基于SQL关系模型数据结构中去。...Nhibernate 来源于非常优秀基于JavaHibernate 关系型持久化框架。...开始做一个简单增删改查示例,如图1示例:  图1 1、创建数据库与,这里假设使用NibernateDemo数据库,Users包括(id,name,pwd)字段,id是主键自动增长,name与pwd...3、编写实体类(POCO,Plain Old CLR Objects),映射文件包含POCO类映射到一个或者多个数据库元数据信息。User.cs文件如下所示。...4、为POCO类编写写一个数据库映射文件,其实User.hbm.xml映射文件包含了对象/关系映射(ORM)所需元数据。元数据包含持久化类声明和属性到数据库映射。

58720

NHibernate总结

/关系数据库映射工具。...对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型表示对象映射到基于SQL 关系模型数据结构中去。...NHibernate不仅仅管理.NET 类到数据库映射(包括.NET 数据类型到SQL 数据类型映射),还提供数据查询和获取数据方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据时间...virtual,要不然会报错 (4)     下面我们开始为People实体类进行数据库映射配置People.hbm.xml NHibernate要知道怎样去加载和存储持久化类对象。...这正是NHibernate映射文件发挥作用地方。映射文件包含了对象/关系映射所需元数据。元数据包含持久化类声明和属性到数据库映射。

90540

Nhibernate_juan benet

大家好,又见面了,我是你们朋友全栈君。 什么是NHibernate? NHibernate是一个基于.Net,用于关系数据库对象持久化类库.它是著名Hibernate.Net版本....NHibernate用于把你.Net对象持久化到底层关系数据库中.你完全不用自己编写Sql语句去操作这些对象,NH会代替你做.你代码里面只需要关心这些对象,NH生成sql语句并能为你取到正确东西...步骤1:创建数据库 我们正在做是一个非常简单NH示例.在这个例子里面,我们实现一个基本用户管理子系统.我们将会使用一个user(sql server 2000): use NHibernate...,如果你把命名为”XXX.hbm.xml”映射文件和XXX类文件放在同一目录下,NH会很让 一切变得很轻松.这儿,我们User.hbm.xml可能会像这样: <?...Configuration对象知道所有在.Net类和后端数据库之间映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly(“NHibernate.Demo.QuickStart

36150

Fluent NHibernate之旅(三)-- 继承

从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前代码,我会另外进行说明 继承 在OOP中,继承作为OO中重要特性,如果NHibernate没有对它支持,...Table per class hierarchy(所有子类在一) Table per subclass(父类一,每个子类一) Other(其他方式) 准备 我们还是以前两篇电子商务来说事...中,一定看到过了,其实就是把父类、子类所有属性放到一个中,这样做好处就是我们不需要建立其他,一表格全搞定,但缺点也显而易见,在属性少情况下或许没有什么,但是多了以后,我们维护、扩展就变得相对麻烦...Table per subclass 在这种方式中,一个父类包括了一些共同属性,子类除了主键外,就只有属于自己属性。...其他方式 Table per concrete class(每个子类一),这种方式应该使用union-subclass标签,但FNT不支持这种方式,为什么呢,呵呵,因为这种方式不好,无论是从结构还是编写上来说

66480

Fluent NHibernate之旅二--Entity Mapping

一个B2C电子商务,我们一定需要产品和订单,因为是示例,所以尽可能简单,我们先设计两:Order 和 Product ?...今天内容不涉及关联关系,所以我们今天暂且不说Order。 好了,接下来开始我们代码演示阶段。...回答是当然需要,因为我们这里属性名与主键名是相同,所以没有进行设置,如果你数据库主键名是ID,这里我们只需要Id(m => m.ProductID).ColumnName(“ID”),你可以看到上述映射中...Price,我用了一下,其实不用也是没有关系,只是做演示。...前几天开篇“Fluent NHibernate之旅一”,反响不是很好,或许大家用NHibernate真的很少,或许我写不够好,或许。。。。

1K90

.NET(C#)有哪些主流ORM框架,SqlSugar,Dapper,EF还是...

完美支持Sql Server(2000至最新版),MySql,Oracle,Access,Sqlite等数据库 支持大量Lambda表达式写法,国产ORM支持度最高,开源中国ORM排行前三 不需要像NHibernate...ServiceStack.OrmLite宗旨:Fast, Simple, Typed ORM for .NET 特点: 开源、收费(免费版只支持单个库10) 推荐等级:★★★☆☆ Entity Framework...(EF) ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来对象关系对应 (O/R Mapping) 解决方案。...推荐等级:★★★☆☆ NHibernate NHibernate是一个面向.NET环境对象/关系数据库映射工具。...对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示对象映射到基于SQL关系模型数据结构中去。

8K90

如何使用Fluent NhibernateAutomapping进行OR Mapping映射

最早项目中,我们使用了最传统XML配置文件方式编写映射关系,但是这样太麻烦,每次修改class和时都要去修改对应XML文件,而且还容易出错,一定有疏忽遗漏地方,还不容易找出错误,所以在第二个项目中...使用Fluent NHibernate最大好处是降低了出错机会,因为Fluent Nhibernate配置是使用C#来编写,可以智能感知,而且还能编译,不像原始XML配置,写错了都不知道。...(比如CostCenter中有public virtual long Id{get;set;},对应列COST_CENTER_ID) 对于一对多关系,使用父方类名作为属性名,中使用父主键列名作为对应外键列列名...Students{get;set;},而在Student类中就必须使用Class作为属性名:public virtual Class Class{get;set;}) 对于SubClass,采用将多个子对象都存在同一方式实现...对于多对多关系,把两个类对应名进行排序,将小排前面,然后将两个名连接起来,中间使用“_”分割。

1.1K10

NHibernate 代码映射实体类

NHibernate 代码映射实体类 关于代码映射 NHibernate 3.2 自带了代码映射机制, 作为 xml 映射之外一种映射方式, 由于推出时间比较晚, 所以资料相对比较少, 而且与社区版...下面就通过一个实例来说明怎么使用 NHibernate 自带代码映射。 实体关系 要映射关系图如下: ?...上图中有三个实体类, 他们之间关系说明如下: Product 与 Store 之间是多对多关系; Store 与 Employee 之间是一对多关系; Employee 与 Store 之间是多对一关系...public ProductMapping() { // 此处添加映射代码 } } 映射到数据 使用 Table 函数将类映射到制定数据: Table("product")...mapper.CompileMappingForAllExplicitlyAddedEntities(); config.AddMapping(mapping); 导出到数据库 也可以向 xml 映射那样, 将映射导出到数据库, 创建对应数据以及关系

88910

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

不过,有社区爱好者开发了一个名为《Fluent NHibernate项目,用来支持NHibernate流式配置。...接下来,让我们探索class如何映射成。 1.2.1 id 任何一个映射都必须声明一个数据主键,大多数类也必须有一个唯一标示字段用来区分不同实例。...column:对应数据列名 type:数据库中类型 1.2.3 many-to-one 在Nhibernate中,多对一配置是在一一端,表示该类有一个外键导航。...class="ManyClass" column="Column" > 1.2.4 one-to-one 一对一关系与多对一关系比较相似...,不同地方在于一对一需要在双方映射关系里均要维护,在有外键/实体中 添加 constrained=“true”。

1.1K20

NHibernate介绍「建议收藏」

用于开发项目的高级语言(C#、Java等)是面向对象,而关系型数据库是基于关系,两者之间沟通需要一种转换,也就是对象/关系数据库映射(Object/Relational Mapping,简称ORM...C#可用以解决对象/关系数据库映射工具有多种,常见有EF (Entity Framework)、NHibernate、iBATIS等,各自优缺点及适用场景在此不做讨论,本文只对如何使用NHibernate...NHibernate是一个面向.NET环境对象/关系数据库映射工具。 1. 创建项目文件 在Visual Studio开发工具里创建需要项目结构。 2....创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然在很多案例中这可能是一对一关系,但这并不是必定。...class元素表示到单个POCO映射。name表示上面的程序集和命名空间中类名,table属性告诉NHibernate数据库中哪个或者视图将被映射。

64120

C# 数据操作系列 - 11 NHibernate 配置和结构介绍

前言 今天是NHibernate第二篇内容,通过上一篇内容,我们初步了解了NHibernate创建和使用。这一篇,我继续探索NHibernate背后秘密。嗯,就是这样。 1....NHibernate结构 先给小伙伴们放个图: ? 这是NHibernate整体结构图。...实例状态 在NHibernate中,一个可持久化对象有三种不同状态,依据与持久化上下文之间关系不同,其中ISession就是一个持久化上下文。...dialect 数据库方言,表示NHibernate连接数据库是什么,该用哪种格式解析关系映射到数据库SQL语句 default_schema 默认schema,用来设置连接字符串连接数据库默认...其中create表示每次只创建新增;create-drop表示每次ISessionFactory创建时创建 ,ISessionFactory关闭时,删除;其中update表示每次都会将DDL SQL

1.2K20

NHibernate继承模式下通过父类Repository查询子类

NHibernate中经常遇到继承与关系数据库ORMapping问题,我之前一篇博客(http://www.cnblogs.com/studyzy/archive/2011/08/16/2140675...(类继承) 其中单继承是我个人比较常用比较推荐做法。...在NHibernate中经常会遇到通过父类Repository来查询子类情况,比如现在有一个抽象Employee对象,下面有OfficeUser和Teacher两个具体对象,这两个对象都有其特有的属性...必须这么写,不能写成大写Class,也不能换成其他字,只有这样才能让NHibernate理解,并正确返回结果。...以上是以最简单了例子说明了如果通过父类查询具体子类方法,实际项目中肯定比这个查询要复杂,但是只要记住了这三种查询要点,结合其他条件就可以写出NHibernate能够理解查询。

32720

NHibernate 批量数据插入测试

NHibernate 批量数据插入测试 .Net 环境下测试 数据库环境以及 NHibernate 配置 SQL Server 环境为 VS2013 自带 localdb v11.0, 对应 NHibernate...10.0.11 稳定版, 对应 NHibernate 配置为: var cfg = new Configuration(); cfg.SetProperty(Environment.ConnectionString...没有提供针对 MySQL BatchingBatcherFactory , 针对 MySQL 测试加载了第三方 NHibernate.MySQLBatcher 测试代码 插入数据测试代码如下... Session 和 StatelessSession 在纯插入数据时性能相当, 只是 StatelessSession 不会检查 实体类约束关系, 比如有重复 Id 实体类。...开发环境测试结果 运行单元测试结果如下图所示: ? 从上图单元测试运行时间看, 在同一台机器上, SqlServer 性能大概是 MariaDB 5~6 倍。

1.1K10

Fluent NHibernate之旅(四)-- 关系(上)

Mapping 今天我们将说一下ORM中R映射,我们现在数据库大多都是关系型数据库了,所以可以说关系在我们数据库设计中也是非常重要部分,NHibernate也非常重视这一块,但在传统方式中,配置就比较麻烦...数据库关系 数据库关系一般有: 1、一对一 2、一对多 3、多对多 开始 结合我们前三个系列示例,我们这一次加一个用户[User],目的就是存储用户信息所用,再加一个UserDetail,作为用户详细信息...,却会抛出异常,因为NHibernate不支持one-to-oneLazy特性,也就是说NHibernate不支持一对一延迟加载。...NHibernate是不支持one-to-one延迟加载,我也不知道为什么,但我们可以婉转进行延迟加载,老赵已经在他文章“NHibernate中一对一关联延迟加载”中提出了解决方案,大家可以看一下...今天说了关联中比较简单一对一关系,其实一对一关系并不简单,第一次接触时候,难免会遇到各种问题,很欢迎大家能留言,大家一起讨论问题。

1.2K60
领券