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

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

使用Fluent NHibernate的最大好处是降低了出错的机会,因为Fluent Nhibernate的配置是使用C#来编写,可以智能感知,而且还能编译,不像原始的XML配置,写错了都不知道。...更多的修改意味着更多的风险,为了减少这方面的风险,同时为了减少配置的工作量,所以在最新的项目中采用了Fluent NHibernate的Automapping。...我们只需要定义好映射的规则,就可以不对每个分别编写映射配置,而是按照规则进行自动的Mapping工作。这样在修改class或者DataTable时,只需要修改即可,不需要再修改配置文件。...比如我们可以定义如下的规则: 和字段名采用每个单词首字母大写的方式而数据库和列名使用全部大写,单词之间下划线分割的方式。...(比如CostCenter对应COST_CENTER) 的主键使用Id命名,的主键使用+“_ID”的命名方式。

1.1K10

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

前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate里的配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...NHibernate映射文件 对于NHibernate映射文件有个约定的名字: .hbm.xml 这里先为大家介绍一下映射文件的格式: 1.1 hibernate-mapping 的说明 <hibernate-mapping...接下来,让我们探索class如何映射成的。 1.2.1 id 任何一个映射都必须声明一个数据的主键,大多数也必须有一个唯一标示字段用来区分不同的实例。..." type="typename" /> name :里的属性 column:对应数据的列名 type:数据库的类型 1.2.3 many-to-one 在Nhibernate...,在有外键的/实体 添加 constrained=“true”。

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

Fluent NHibernate之旅

这是官方的说明,大体的话也就是用编程的方式进行配置,让你能更好的理解,不需要编写复杂的映射文件,它能完全替换NHibernate映射文件,让你在映射的时候能使用C#的强类型方式。...下载地址:http://fluentnhibernate.org/ 二、使用NHibernateFluent创建ISessionFactory 准备工作: 1、下载Fluent库,其中已经包含了NHibernate...2、下载NHibernate库,虽然Fluent已经有了最新版本,但我们还需要Proxy的Dll,这里我们使用NHibernate.ByteCode.Castle这个程序集。...SessionFactory反映了数据库映射关系,我们来看下配置: ...下面我们在代码创建一个SessionFactory,NHibernate建议我们在一个应用程序中使用一个数据库一个SessionFactory,这里我们用单数据库,代码如下: public static

1K60

Fluent NHibernate之旅二--Entity Mapping

如果你要亲手试验一下,可以先看一下“Fluent NHibernate之旅一”,进行一下数据库和SessionFactory的准备。...的ClassMap,然后在构造方法完成映射方法,就能完成传统方式的映射了。...回答是当然需要,因为我们这里的属性的主键名是相同的,所以没有进行设置,如果你数据库的主键名是ID,这里我们只需要Id(m => m.ProductID).ColumnName(“ID”),你可以看到上述映射中的...对于我这种新手来说,Fluent更适合我,因为我可以用它来进行学习NHibernate映射做好了,接下来我们在NHibernate映射加到配置。...总结 今天介绍了如何映射简单的实体,但很多时候这都是理想的数据设计,还有更多复杂,不可预计的数据设计,这时候我们Fluent能做到吗?

98590

Fluent NHibernate之旅(三)-- 继承

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

64480

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

经过了前面三篇的介绍,相信大家对Fluent NHibernate已经有一定的了解了,在我们学习Fluent 也已经进入了RTM版本。...这次的版本发布离RC版只有半个月不到,修正了很多bug,同时补充了大量的功能,在每天更新,也看到了大量的单元测试,我们相信Fluent NHibernate 已经相对稳定成熟了。...Fluent NHibernate之旅系列导航: 一、开篇:ISessionFactory Configuration 二、实体映射:Entity Mapping 三、继承映射:Inheritence...Mapping 今天我们将说一下ORM的R映射,我们现在的数据库大多都是关系型数据库了,所以可以说关系在我们数据库设计也是非常重要的部分,NHibernate也非常重视这一块,但在传统方式,配置就比较麻烦...数据库关系 数据库关系一般有: 1、一对一 2、一对多 3、多对多 开始 结合我们前三个系列的示例,我们这一次加一个用户[User],目的就是存储用户信息所用,再加一个UserDetail,作为用户的详细信息

1.2K60

NHibernate 代码映射实体

NHibernate 代码映射实体 关于代码映射 NHibernate 3.2 自带了代码映射机制, 作为 xml 映射之外的一种映射方式, 由于推出的时间比较晚, 所以资料相对比较少, 而且与社区版的...下面就通过一个实例来说明怎么使用 NHibernate 自带的代码映射。 实体关系 要映射关系图如下: ?...public ProductMapping() { // 此处添加映射代码 } } 映射到数据 使用 Table 函数将映射到制定的数据: Table("product")...也可以向 xml 映射那样, 将映射导出到数据库, 创建对应的数据以及关系: var schemaExport = new SchemaExport(config); schemaExport.SetDelimiter...Attribute Mapping 相比, 对原来的 POCO 实体没有污染 (Attribute) ; NHibernate 自带, 可以说是一等公民, 而 Fluent Mapping 是第三方维护的

86810

NHibernate详解

NHibernate 为你处理这些,远胜于你不得不写SQL去数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的和字段中去。...开发的过程: 1.新建一个将要持久化.Net对象的 2.构建一个需要被持久化的.Net 3.构建一个可以让NHibernate知道如何持久化对象属性的映射文件...第三步:写映射文件 现在我们有数据和需要去映射它的.Net。我们需要一种方式去让NHibernate知道如何从一个映射到另一个。这个任务依赖于映射文件来完成。...这里我们将映射类型名称(,装配件)到我们数据库的User,这里和Hibernate有一点点的不同。你将不得不告诉NHibernate从何处提取对象。...你将有以下内容 User.cs —-你需要持久化的C# User.hbm.xml —-你的NHibernate映射文件(记得编译为嵌入的资源) App.config —对ADO.NET

53330

NHibernate介绍「建议收藏」

C#可用以解决对象/关系数据库映射的工具有多种,常见的有EF (Entity Framework)、NHibernate、iBATIS等,各自的优缺点及适用场景在此不做讨论,本文只对如何使用NHibernate...相比较而言,有些ORM解决方案需要特殊属性,或者是基于模型对象,这些对象又是特定的基中继承而来的。 在NHibernate不用特殊的修饰就可以让对象和持久化层交互。...可以借助MyGeneration自动代码工具数据生成数据模型和对应的映射文件。...创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然在很多案例这可能是一对一关系,但这并不是必定的。...class元素表示到单个POCO的映射。name表示上面的程序集和命名空间中的,table属性告诉NHibernate数据库的哪个或者视图将被映射

61420

Fluent Nhibernate之旅(五)--利用AutoMapping进行简单开发

Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,在Nhibernate的书中也相应的推荐了使用FN来进行映射配置,之前写的FN之旅至今还有很多人会来私信我问题,说来惭愧,...Mapping 五、一对多映射:One-to-Many Mapping 六、Fluent NHibernate之旅(四)-- 关系(下) 安装 现在在项目中使用FN很方便,使用Nuget管理就可以了...,ORM最大的好处就是我们可以随意的变更我们的数据库类型,不需要考虑其类型,这是我选择Nhibernate的原因,EF虽然通过扩展能够支持其他数据库,但我相信用EF使用其他数据库的人很少吧。...刚我们的测试报错,是因为Employee的Name是个UserNameNhibernate的Component,我在FN之旅四(上)中有介绍到,默认情况下映射根据字段映射数据库的,所以上面的测试会报错...Fluent Nhibernate确实是个好东西,让我在开发上省去了很多时间,今天虽然介绍了AutoMapping,但我不推荐您在您的项目中使用,用起来没手感(个人感觉),需要约定的东西太多了,对于数据库结构也得按照他的契约来

92460

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

该篇文章已收录到【DotNetGuide(C#/.NET/.NET Core学习、工作、面试指南)】GitHub知识库欢迎大家前往! 什么是ORM?...如何选择合适自己的ORM框架? 对于我们而言选择ORM框架的目的其实都是为了让我们的程序更好的操作数据库,提高开发编程效率和程序的维护拓展性。...主要特点: 支持 CodeFirst 模式,即便使用 Access 数据库也支持数据迁移; 支持 DbFirst 模式,支持数据库导入实体,或使用实体生成工具生成实体; 支持 深入的类型映射,比如...与ActiveRecord一样,它支持对象和数据库之间的密切关系。 与SubSonic一样,它支持使用 T4 模板生成 poco (仅限 V5)。...用于安全执行 CRUD 操作和查询(使用参数)并以强类型方式检索这些查询结果的非常简单的方法。 与您的数据模型一起工作,而不会强迫您更改您的。(包含一个小的反射驱动 ORM 层。)

5.7K11

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

先写一个简单的给你定义的数据库添加一条元素的代码:(不使用Nhibernate的) 前提:先把该用的dll文件,添加到引用里面去不然,会连接不成功,之前下载的Connector/Net(选择.Net&...,新建一个数据库,名字随意,添加一个,名字随意,然后添加两个字段,一个字段名称为name,一个为age,好了建好之后,我们开始使用很简单很简单一个C#连接MySql数据库的代码 using System...然后我们在工程下面新建两个文件夹:Model文件夹用来存放数据库映射,还有一个Manger用来存放对数据库执行增删改查操作的。...; }//的年龄 } } 2.再在Modle文件下建立一个映射,名字为MapAPengChao,这个的代码如下: using FluentNHibernate.Mapping...).Mappings //AddFromAssemblyOf当前NHibernateHelper的dll文件里面进行自动映射

1.4K30

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

接着上一篇,我们继续讲解ORM的关系。在数据库设计,我们最多打交道的,要算一对多关系了,延续我们的示例,我们来讲解一下一对多的关系。...Fluent NHibernate之旅系列导航: 一、开篇:ISessionFactory Configuration 二、实体映射:Entity Mapping 三、继承映射:Inheritence...Mapping 四、一对一映射:One-to-One Mapping 场景和数据库设计 延续我们的演示范例,用户和订单是非常典型的一对多范例。...映射 不得不赞叹一下 Fluent Nhibernate ,有了它,我们的映射一切都变得如此简单,先来看看Model吧,用户的订单列表,对于用户来说,暂时是不需要排序的,所以我们可以使用ISet作为Order...我们在Output,能看到NHibernate生成的Sql语句,测试也成功,说明我们刚刚是立即加载了Orders属性。

689100

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

如何选择合适自己的ORM框架? 对于我们而言选择ORM框架的目的其实都是为了让我们的程序更好的操作数据库,提高开发编程效率和程序的维护拓展性。...主要特点: 支持 CodeFirst 模式,即便使用 Access 数据库也支持数据迁移; 支持 DbFirst 模式,支持数据库导入实体,或使用实体生成工具生成实体; 支持 深入的类型映射...  NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。...与ActiveRecord一样,它支持对象和数据库之间的密切关系。 与SubSonic一样,它支持使用 T4 模板生成 poco (仅限 V5)。...用于安全执行 CRUD 操作和查询(使用参数)并以强类型方式检索这些查询结果的非常简单的方法。 与您的数据模型一起工作,而不会强迫您更改您的。(包含一个小的反射驱动 ORM 层。)

3.8K20

C# 数据操作系列 - 6 EF Core 配置映射关系

前言 在《C# 数据操作系列 - 5. EF Core 入门》篇,我们简单的通过两个演示了一下EF增删改查等功能。细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端倪。...映射规则 通过简单的示例,我们可以看到EF的映射规则是什么。基于约定由于配置的原则,EF把实体当做是一个单数形式的类型描述,把认为是实体的集合,所以名为的复数形式。...对于主键,默认情况下EF会检索实体有没有名为Id或者+Id的属性,如果有EF则认为这个属性是主键,否则会认为该类没有设置主键。EF检索到主键的类型是数字类型的话,会自动添加自增长的约束。...对于其他属性,EF会自动按照同名的形式映射到数据。 对于外键,如果在里添加了引用类型,而这个引用类型也在EF的上下文中,EF会把这种属性称为导航属性。...EF一旦在检索到了导航属性,就会去寻找对应的外键。EF会认为 属性+Id或者+Id 可能是外键属性,如果找到名称一致且类型与导航属性目标的主键类型一致,则认为是外键。

2.6K21

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

ISessionFactory - NHibernate.ISessionFactory: 一个基于单数据库的已编译的映射缓存,它是持久不变的且线程安全(额,这句话是它的文档翻译过来的)。...提供了一个通过主键检索对象和导航链接查询对象时的一级缓存。也就是EF Core的导航属性。...这种状态通常是数据库获取到数据或者新建的数据附加到了上下文中。 detached 游离态 该状态的对象是从上下文中分离出来的,有了数据库主键,曾经或现在仍然有一条数据库记录与之对应。...配置项介绍 在上一篇文章,我们介绍了一下如何设置NHibernate的基本配置项,但是并未对配置项进行深入。...总结 这是一篇枯燥乏味的说明文,主要介绍了Nhibernate的基本内容。下一章我们来试试,如何创建Nhibernate映射配置。

1.1K20

Fluent NHibernate RC 1.0 --升级内容

Fluent NHiberante(FNT) RC 1.0 已经在上个星期发布了,其中很多东西被废弃,有些方法改进,还有一些命名更贴切,虽说不是很完美,但已经做的非常完善了,如果大家在使用,发现bug...Fluent NHibernate Release Notes 1.0 : http://wiki.fluentnhibernate.org/Release_notes_1.0 FNT在映射的时候,分为...Fluent Mapping(手动)和Auto Mapping(自动)两种方式,我在我的“Fluent系列”中一直使用的是手动方式,我觉得相对应的好控制,而且也让我同时能更好的学习NHibernate。...这一次他们完全丢弃了SetAttribute方法,完全依赖Fluent的方式来进行实体映射,所以很多特性我也不知道如何映射,不过这时候你还是可以区GoogleGroups求助一下,强烈建议大家把它收藏一下吧...3、分开SubClass映射:在RC版以前,不管是SubClass还是JoinSubClass,我们都只需要映射在父中就可以了,但这一做法在RC版已经不再提倡,我们要分开映射,我相信这个做法是好的,

62350

Nhibernate_nhibernate与ef区别

数据库创建把.Net持久化的对应. 2. 创建需要被持久化的.Net. 3. 创建映射文件,以告诉NH怎样持久化这些的属性. 4....步骤3:编写映射文件(Mapping File) 现在我们有了数据库和.Net,我们还需要告诉NH怎样在数据库之间映射.这就需要映射文件了.最简捷(也是可维护性最好的)方法就是为每一个编写一个映射文件...:第一个tag是class,这里我们把类型(和Assembly)映射数据库的user(这里和hibernate有些不同,我们必须告诉NH这个哪儿来的.这个差异是由.Net和Java Reflect...机制的不同引起的-zyyang).这种情况下,我们是Assembly NHibernate.Demo.QuickStart载入NHibernate.Demo.QuickStart.User..NH...让我们返回到"id" tag,你可能会猜想这个tag和映射的Primary Key有关.正确.ID tag的格式和Property tag的相似.我们Property(name)映射到目标数据库的字段

55030

基于.NET平台常用的框架整理

关于NoSQL数据库: Mongodb:分布式文件存储数据库。 Membase:家族的一个新的重量级的成员。 自动任务调度框架 Quartz.NET:开源的作业调度和自动任务框架。...Nhibernate:面向.NET环境的轻量级的ORM框架。 SqlMapper.cs:用于小项目的通用的C#数据库访问。...AutoMapper:流行的对象映射框架,可减少大量硬编码,很小巧灵活,性能表现也可接受。 SubSonic:优秀的开源的ORM映射框架,同时提供符合自身需要的代码生成器。...ExposedObject:在的外部通过动态语言dynamic的方式访问私有成员。 PrivateObject:微软单元测试框架便捷在外部调用内部私有成员的一个。...分词、全文检索和搜索引擎 Lucene.net:流行高性能的全文索引库,可用于为各类信息提供强大的搜索功能。

2.9K20
领券