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

通过代码在由多列组成的主键上定义NHibernate映射

NHibernate是一个开源的对象关系映射(ORM)框架,它允许开发人员通过代码来定义对象与关系数据库之间的映射关系。通过NHibernate,开发人员可以使用面向对象的方式来操作数据库,而不需要直接编写SQL语句。

在NHibernate中,可以通过代码在由多列组成的主键上定义映射。多列主键是指一个实体类的主键由多个数据库列组成。通过在映射文件或使用属性注解的方式,可以指定多列主键的映射关系。

NHibernate提供了多种方式来定义多列主键的映射,以下是其中的一种方式:

  1. 首先,在实体类中定义多个属性,每个属性对应一个数据库列。
  2. 使用<composite-id>元素或@EmbeddedId注解来标记这些属性作为主键。
  3. <class>元素或@Entity注解中,使用<key-property>元素或@KeyProperty注解来指定每个属性的映射细节,如列名、数据类型等。

通过以上步骤,就可以在NHibernate中定义由多列组成的主键映射。

NHibernate的优势包括:

  • 提供了面向对象的方式来操作数据库,简化了开发人员的工作。
  • 支持多种数据库,可以在不同的数据库之间切换而不需要修改代码。
  • 提供了缓存机制,可以提高数据访问性能。
  • 支持事务管理,确保数据的一致性和完整性。

NHibernate的应用场景包括:

  • 企业级应用程序的开发,特别是需要与关系数据库进行交互的应用。
  • 需要跨数据库平台的应用程序,NHibernate可以提供数据库无关性。
  • 需要高性能和可扩展性的应用程序,NHibernate提供了缓存和分布式事务管理的支持。

腾讯云提供了云数据库 TencentDB for MySQL,可以与NHibernate结合使用。TencentDB for MySQL是一种高性能、可扩展的云数据库服务,提供了稳定可靠的MySQL数据库环境,适用于各种规模的应用程序。

更多关于腾讯云数据库的信息,请参考:TencentDB for MySQL

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

相关·内容

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

由于项目中使用了NHibernate来作为ORMapping构建数据访问层,那么就必须要配置Object和DataTable映射。...我们只需要定义映射规则,就可以不对每个表和类分别编写映射配置,而是按照规则进行自动Mapping工作。这样修改class或者DataTable时,只需要修改类和表即可,不需要再修改配置文件。...(比如CostCenter中有public virtual long Id{get;set;},对应表中COST_CENTER_ID) 对于一对关系,使用父方类名作为属性名,表中使用父表主键列名作为对应外键列名...TYPE } } 然后就是关于DiscriminateColumn中值如何映射成对应Subclass,需要实现ISubclassConvention接口,代码如下: public class...PS:以上代码主要都是同事在前期实现,我只是在后期接手了该工作,在此基础做了一些简单维护和修改。

1.1K10

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

前言 一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...assembly:指定映射对象所在assembly,一般情况指的是项目名称 namespace:所在命名空间 default-access:可选,默认是property,表示NHibernate读取数据策略...接下来,让我们探索class如何映射。 1.2.1 id 任何一个映射都必须声明一个数据表主键,大多数类也必须有一个唯一标示字段用来区分不同实例。...中,对一配置是一端,表示该类有一个外键导航。...2.2 修改 NHibernate修改与EF类似,也是ISession监控了修改,不用做过多操作。

1.1K20
  • Fluent NHibernate之旅二--Entity Mapping

    本节内容: 简单实体映射 使用自定义类型映射实体属性 NHibernate实体映射(Entity Mapping)做非常好,虽然不是完美,但一些我们经常使用,基本已经都支持了,而且配置也相对比较简单...类,然后构造方法中完成映射方法,就能完成传统方式映射了。...映射做好了,接下来我们NHibernate中把映射加到配置中。...正如我们预料一样,测试通过,说明我们映射没有出现错误。...二、使用自定义类型映射实体属性 NHibernate支持我们用自定义类型来映射属性,但因为我是初学,我真的不会,当然我在网上找到了相关资料,在此也不多说,就说说Fluent方式吧,映射定义属性时候

    1K90

    数据库模型设计——主键设计

    在数据库设计时,主要就是对实体和关系设计,实体表现出来就是表,关系表现出来就是外键。而对于一个表,两部分组成主键和属性。主键简单定义就是表中为每一行数据唯一标识。...通过上面的比较,我们知道使用数字类型是更好方式,那么我们为什么还会有人使用GUID和字符串来当主键呢?那是因为: 相对于数字类型,字符类型更易读易记,检索关联数据时,更方便直接。...联合主键主要使用在关系时,中间表就需要使用联合主键简单对多关系中,我们不需要为中间关联建立实体,所以中间表可能就只需要两,分别是两个实体表主键。...该值NHibernate程序内部生成。 其他程序赋值,完全由程序根据自己算法生成并赋值。...以SQL Server为例,默认情况下,建立主键,就会建立聚集索引,但是实际,我们可以在建立主键时不使用聚集索引。

    1.1K30

    NHibernate学习笔记之一,Hello world!

    NHibernate是一个面向.NET环境对象/关系数据库映射框架,主要应用在数据持久层,和其它ORM框架一样用来把对象模型表示对象映射到基于SQL关系模型数据结构中去。...准备工作: 需要使用.NET Framework 2.0或以版本框架,准备NHibernate框架,本文使用3.3版,到目前NHibernate都还是基于.net framework 2.0,官方下载地址...4、为POCO类编写写一个数据库映射文件,其实User.hbm.xml映射文件包含了对象/关系映射(ORM)所需元数据。元数据包含持久化类声明和属性到数据库映射。...“嵌入资源” 图3 5、定义NHibernateHelper帮助类,Isession是NHibernate工作单元,它是一个持久化管理器,我们通过ISession来从数据库中存取数据。...NHibernate通过对Configuration().Configure()调用来装载配置文件,并初始化成一个Configuration实例,一般ISessionFactory通常只是被初始化一次

    59520

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

    前言 今天是NHibernate第二篇内容,通过上一篇内容,我们初步了解了NHibernate创建和使用。这一篇,我继续探索NHibernate背后秘密。嗯,就是这样。 1....NHibernate通过ADO.NET 建立访问数据库连接,然后封装了一个Transaction(事务)工厂和一个Session工厂。...ISessionFactory - NHibernate.ISessionFactory: 一个基于单数据库已编译映射缓存,它是持久不变且线程安全(额,这句话是从它文档翻译过来)。...一个ADO.NET连接封装,用来提供ITransaction工厂。提供了一个通过主键检索对象和导航链接查询对象时一级缓存。也就是EF Core中导航属性。...总结 这是一篇枯燥乏味说明文,主要介绍了Nhibernate基本内容。下一章我们来试试,如何创建Nhibernate映射配置。

    1.2K20

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

    经过了前面三篇介绍,相信大家对Fluent NHibernate已经有一定了解了,我们学习中,Fluent 也已经进入了RTM版本。...这次版本发布离RC版只有半个月不到,修正了很多bug,同时补充了大量功能,每天更新中,也看到了大量单元测试,我们相信Fluent NHibernate 已经相对稳定成熟了。...Mapping 今天我们将说一下ORM中R映射,我们现在数据库大多都是关系型数据库了,所以可以说关系我们数据库设计中也是非常重要部分,NHibernate也非常重视这一块,但在传统方式中,配置就比较麻烦...映射 Fluent NHibernate 映射代码: public class UserMap : ClassMap { public UserMap() {...(红色标记):因为UserDetail使用主键ID与UserID是一致,所以我们要使用Foregin来获取UserID。

    1.2K60

    NHibernate联合主键详细示例

    使用NHibernate实现一对对一关联很是简单,可如果要用复合主键实现确实让人有些淡淡疼。虽然很淡疼但还是要去抹平这个坑,在下不才,愿意尝试。...实现一对 和 对一映射 这步没有多大难度,主要处理好注解顺序即可,以及OneToMany时联合主键如何设置问题.示例代码如下: [Bag(0, Name = "Childs", Cascade...).GetHashCode(); //判断缓存是否存在,已此作为Key } 插入数据时报错,提示SqlParameterCollection索引无效[索引溢出错误] 原因,最初设计Parent时候...,与联合主键共用了一个字段GroupNumber,导致NHibernate映射转换时候会计算出一个需要填充值,但SqlParameterCollection中又少一个位置。...,导致映射出错 四、终于实现了,总结 类都必须可以序列化,也就是要还serializable标注 继承BaseInfo实现联合主键(不推荐使用) Save时,如果用session.merge方法组合缓存与修改对象

    1.5K80

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

    ,MySQL-FRONT ,Connector/Net(选择.Net&Mono) Nhibernate包可以VS2015中下载 ,对MySql操作,我用是MySQL-FRONT,注意要想实现和数据库链接...先写一个简单给你定义数据库中添加一条元素代码:(不使用Nhibernate) 前提:先把该用dll文件,添加到引用里面去不然,会连接不成功,之前下载Connector/Net(选择.Net&...然后我们工程下面新建两个文件夹:Model文件夹用来存放数据库表类和映射类,还有一个Manger类用来存放对数据库执行增删改查操作类。...我们Model文件下新建一个名字为APengPhao类,这个刚好也是和数据库表名相同,请看这个类代码: using System; using System.Collections.Generic...> x.Id).Column("Id");//主键映射主键 //其他元素我们使用Map来映射 Map(x => x.Name).Column("name

    1.4K30

    Fluent NHibernate之旅(三)-- 继承

    经过了“开篇”和“简单映射”两篇文章,相信大家对Fluent NHibernate 有了一定了解了,FluentNHibernate实际就是对 NHibernate 映射一定扩展,我们能完全利用强类型...、泛型、Lambde表达式等等Vs、Framework等特性简单完成映射工作,同时也能让我们学习NHibernate映射方式,一举夺得,这么好玩东东,有理由不继续完成这个系列吗?...从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前代码,我会另外进行说明 继承 OOP中,继承作为OO中重要特性,如果NHibernate没有对它支持,...在说一下DiscriminateSubClassesOnColumn,这就是标识符一个映射方式,因为RC版之前,我们可以使用SetAttribate方法,设定我们父类为"not-null" 但是...,而且系列中,基本每个范例都写了测试代码,虽然丑陋了点,但从小做起嘛,以后要养成这个习惯。

    68880

    2022年了有哪些值得推荐.NET ORM框架?

    它解决了对象和关系型数据库之间数据交互问题,ORM作用是关系型数据库和业务实体对象之间作一个映射,这样我们具体操作业务对象时候,就不需要再去和复杂SQL语句打交道,只需简单操作对象属性和方法...PgSql 数组类型等; 支持 丰富表达式函数,以及灵活定义解析; 支持 导航属性一对贪婪加载,以及延时加载; 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁; 支持 MySql/...  NHibernate 是一个成熟开源对象关系映射器,适用于 .NET 框架。...SmartSql将管理你 SQL ,并且通过筛选标签来维护本来你代码层面的各种条件判断,使你代码更加优美。 主要特点:简洁、高效、高性能、扩展性、监控、渐进式开发!...架构,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式,而不是魔术字符串,同时代码和数据库之间维护一个薄抽象层。

    5.9K11

    2022年了有哪些值得推荐.NET ORM框架?

    它解决了对象和关系型数据库之间数据交互问题,ORM作用是关系型数据库和业务实体对象之间作一个映射,这样我们具体操作业务对象时候,就不需要再去和复杂SQL语句打交道,只需简单操作对象属性和方法...,比如 PgSql 数组类型等; 支持 丰富表达式函数,以及灵活定义解析; 支持 导航属性一对贪婪加载,以及延时加载; 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁...  NHibernate 是一个成熟开源对象关系映射器,适用于 .NET 框架。...SmartSql将管理你 SQL ,并且通过筛选标签来维护本来你代码层面的各种条件判断,使你代码更加优美。 主要特点:简洁、高效、高性能、扩展性、监控、渐进式开发!...架构,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式,而不是魔术字符串,同时代码和数据库之间维护一个薄抽象层。

    3.8K20

    基于DotNet构件技术企业级敏捷软件开发平台 - AgileEAS.NET - 数据关系映射ORM

    AgileEAS.NETORM并没有采用如NHibernate映射文件文件模式,而是采用了直接硬编码模式实现,ORM体系设计采用了属性/>数据对象>数据集合(表)结构: image.png...      最基本思路是一个记录/实体(IEntity)映射一条记录,一个实体包括若干属性/(Colunm),而一组IEntity和一组Colunm组成一个数据表对象(IEntity),用于对象一个表...组织于数据库与数据库表行中,1-n个组成一行数据或一个数据库表,包含了标题、名称、数据类型、数据库列名、大小、值表达式、是否自动增长、值、默认值等属性。...(OrdeElement)、这三个对象组合成复杂查询条件,通过Query方法查询指定条件数据。      ...我们知道进行数据库操作中要进行条件查询,我们把行、、表都进行了对象映射,那么SQL条件怎么办,AgileEAS.NET中定义了三个类,查询条件(Condition)、组成条件元素(Element)

    1.8K80

    SpringDataJPA笔记(1)-基础概念和注解

    entity class映射到一个或多个从表。从表根据主表主键(列名为referencedColumnName值),建立一个类型一样主键,列名name属性定义。...,@ManyToOne,@OneToMany,@ManyToMany 一对一关联,对一关联,一对关联,关联 @JoinTable JoinTablemany-to-many关系所有者一边定义...entity class所有id fieldid class都要定义,且类型一样。 @MapKey 一对对多关系中,我们可以用Map来保存集合对象。...getter方法,用于序列化时嵌入我们自定义代码,比如序列化一个double时在其后面限制两位小数点。...@JsonDeserialize 此注解用于属性或者setter方法,用于反序列化时可以嵌入我们自定义代码,类似于上面的@JsonSerialize

    3.9K20

    NHibernate实践与模式

    下面我们先看一下它框架 工作原理 将数据库表结构映射成实体类(xml-mapping文件,实体类 ,class文件),支持一对对一,关系,默认生成对这些表CURD操作,包括多表脊联操作...(select,insert,update,delete),也可以通过xml文件配置作自定义查询,或是调用存储过程。...当然还有很多NHibernate开发框架大家可以www.codeproject.com,www.codeplex.com找到。...开发步骤 一般我们是在先有数据库表结构情况下,一层一层往上写,先创建数据库表,然后写数据库访问层代码(可以通过一些通用ado.net类库完成如 Enterpriselibrary),接下来开始编写业务曾代码...这个代码只需要包括实现ISiteAddressRespository定义接口方法,而无需再去实现CRUD操作。

    80940

    Spring中国教育管理中心-Apache Cassandra Spring 数据教程十二

    当您 CQL 表具有复合主键时,您必须创建一个@PrimaryKeyClass来定义复合主键结构。在这种情况下,“复合主键”是指一个或多个分区可选地与一个或多个集群组合。...主键可以使用任何单一简单 Cassandra 类型或映射用户定义类型。不支持集合类型主键。 简单主键 一个简单主键实体类中一个分区键字段组成。...(或复合键)多个主键字段组成。...也就是说,复合主键可以多个分区键、一个分区键和一个集群键或多个主键字段组成。 复合键可以通过 Spring Data for Apache Cassandra 以两种方式表示: 嵌入到一个实体中。...这样做结果是 所有属性UserName都被折叠到user 3 ( user_id, firstname, lastname)组成表格中。 嵌入实体可能只包含简单属性类型。

    1.8K40

    NHibernate介绍「建议收藏」

    NHibernate是一个面向.NET环境对象/关系数据库映射工具。 1. 创建项目文件 Visual Studio开发工具里创建需要项目结构。 2....添加对NHibernate引用 当下载并解压NHibernate安装包后,电脑就会创建一些目录,包括“Required_Bins”,要把 Required_Bins目录下DLL引用到项目里来,它们是...创建数据模型 NHibernate允许直接使用Plain Old CLR Objects (POCOs),而不用通过存储过程来直接和数据库交互。使用POCOs一个优势在于不用绑定特定持久化层。...可以借助MyGeneration自动代码工具从数据表生成数据模型和对应映射文件。...创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然很多案例中这可能是一对一关系,但这并不是必定

    67720
    领券