首页
学习
活动
专区
工具
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.

68530
  • NHibernate教程

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

    36910

    Nhibernate入门与demo

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

    35430

    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

    59330

    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)所需元数据。元数据包含持久化类声明和属性到数据库映射。

    60020

    NHibernate总结

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

    92540

    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不支持这种方式,为什么呢,呵呵,因为这种方式不好,无论是从结构还是编写上来说

    69680

    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

    37750

    Fluent NHibernate之旅二--Entity Mapping

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

    1K90

    如何使用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

    .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关系模型数据结构中去。

    8.3K90

    NHibernate 代码映射实体类

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

    90510

    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数据库中哪个或者视图将被映射。

    70320

    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能够理解查询。

    35120

    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

    NHibernate实践与模式

    NHibernate实践与模式 NHibernate是一款非常优秀O/R mapping开源框架,再还没有.net时候它已经存在于java环境中。...下面我们先看一下它框架 工作原理 将数据库结构映射成实体类(xml-mapping文件,实体类 ,class文件),支持一对多,多对一,多对多关系,默认生成对这些CURD操作,包括多表脊联操作...也没有比必要再去为对数据库操作写任何t-sql脚本,只需要专著业务层面的开发。从而大大减少sql层bug和开发时间,提高开发效率。...开发步骤 一般我们是在先有数据库结构情况下,一层一层往上写,先创建数据库,然后写数据库访问层代码(可以通过一些通用ado.net类库完成如 Enterpriselibrary),接下来开始编写业务曾代码...然后再去创建数据库,和UI部分; 我还是按在有数据情况下如何用NHibernate作开发 1.用MyGeneration创建实体类和mapping文件选择NHibernate lujan99 1.06

    81240
    领券