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

NHibernate 代码映射实体类

NHibernate 代码映射实体类 关于代码映射 NHibernate 3.2 自带了代码映射机制, 作为 xml 映射之外一种映射方式, 由于推出时间比较晚, 所以资料相对比较少, 而且与社区版...Fluent Mapping 和 Attribute Mapping 不同, 有其独特设计风格。...public ProductMapping() { // 此处添加映射代码 } } 映射到数据 使用 Table 函数类映射到制定数据: Table("product")...使用 Property 函数映射属性NHibernate 提供了内置工具类来简化代码: Property( m => m.Name, map => { map.Column...Attribute Mapping 相比, 对原来 POCO 实体类没有污染 (Attribute) ; NHibernate 自带, 可以说是一等公民, 而 Fluent Mapping 是第三方维护

86810

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

,我们使用了Fluent NHibernateMapping方式代替XML配置。...使用Fluent NHibernate最大好处是降低了出错机会,因为Fluent Nhibernate配置是使用C#来编写,可以智能感知,而且还能编译,不像原始XML配置,写错了都不知道。...更多修改意味着更多风险,为了减少这方面的风险,同时为了减少配置工作量,所以在最新项目中采用了Fluent NHibernateAutomapping。...(比如CostCenter中有public virtual long Id{get;set;},对应COST_CENTER_ID) 对于一对多关系,使用父方类名作为属性名,中使用父主键列名作为对应外键列名...对于多对多关系,把两个类对应名进行排序,排前面,然后两个名连接起来,中间使用“_”分割。

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

Fluent NHibernate之旅二--Entity Mapping

回答是当然需要,因为我们这里属性名与主键名是相同,所以没有进行设置,如果你数据库主键名是ID,这里我们只需要Id(m => m.ProductID).ColumnName(“ID”),你可以看到上述映射中...映射做好了,接下来我们在NHibernate把映射加到配置。...二、使用自定义类型映射实体属性 NHibernate支持我们用自定义类型来映射属性,但因为我是初学,我真的不会,当然我在网上找到了相关资料,在此也不多说,就说说Fluent方式吧,在我映射自定义属性时候...为了接下来方便,我把FluentMapping都生成到我传统方式Mapping目录,加入到项目,设置成嵌入资源,一切都为了以后教程,换句话说以后教程,我一般都会使用Fluent来进行映射...前几天开篇“Fluent NHibernate之旅一”,反响不是很好,或许大家用NHibernate真的很少,或许我写不够好,或许。。。。

98590

Fluent NHibernate之旅(三)-- 继承

经过了“开篇”和“简单映射”两篇文章,相信大家对Fluent NHibernate 有了一定了解了,FluentNHibernate实际就是对 NHibernate 映射一定扩展,我们能完全利用强类型...从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前代码,我会另外进行说明 继承 在OOP,继承作为OO重要特性,如果NHibernate没有对它支持,...,一定看到过了,其实就是把父类、子类所有属性放到一个,这样做好处就是我们不需要建立其他,一张表格全搞定,但缺点也显而易见,在属性情况下或许没有什么,但是多了以后,我们维护、扩展就变得相对麻烦...在子类,我们必须制定对应标识符值,这里又出现败笔了,只能设定string类型,My God,变相SetAttribute,我觉得这个已经脱离了Fluent称号了(在RC升级介绍已经说明)。...Table per subclass 在这种方式,一个父类包括了一些共同属性,子类除了主键外,就只有属于自己属性

64480

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

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

1.2K60

Nhibernate入门与demo

先看一张经典图:      ORM:对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型表示对象映射到基于SQL 关系模型数据结构中去...通俗讲,就是我们操作实体类,然后让ORM框架自动映射到数据库。      而Nhibernate就是:.Net环境下实现ORM技术一个框架!     ...先看项目整体图,作为初学demo 没有层次,没有优化,只是作为入门一个简单介绍!      第一步:设计数据库。建立一个User。...Email对应数据库SEmail 类型是String,长度50个字符。     ...然后对应数据库名。设置延迟加载为false。具体可以参考Nhibernate官方文档。 3、一定要将这个文件属性:生成操作设置为嵌入资源!

31530

EntityFramework Core 学习扫盲

包含和排除实体类型 实体在Context射到数据库有多种方式: 使用DbSet定义属性。 在OnModelCreating方法中使用Fluent Api配置。...主键 默认情况下,EF CORE会将实体命名为Id或者[TypeName]Id属性映射为数据库主键。当然有些开发者不喜欢主键命名为Id,EF CORE也提供了两种方式进行主键相关设置。...Fluent API [HasKey] Fluent Api方式HasKey方法可以属性映射为主键,对于复合主键(多个属性组合而成主键标识)也可以很容易地进行表示。...在Fluent Api,有两种方法可以指定备用键,一种是当开发者实体属性作为另一个实体外键目标,另一种是手动指定。EF CORE默认约束是前者。...顾名思义,一种继承结构全部映射到一张,比如Person父类,Student子类和Teacher子类,由EF CORE映射到数据库时,将会只存在Person类,而Student和Teacher将以标识形式出现

9.5K90

Entity Framework Fluent API

实际数据类型因使用数据库提供程序而异。属性设置为行版本会自动属性配置为开放式并发标记。...所以以下API映射推荐使用FluentAPI方式来设置映射 6.ToTable - TableAttribute:配置此实体类型映射到名 modelBuilder.Entity()....ToTable("Order", "Order");//指定“Order”对应名及架构 7.HasColumnName - ColumnAttribute:配置用于存储属性数据库名称 modelBuilder.Entity...除非指定此关系,否则实体类型实例无法保存到数据库。数据库外键不可为null。...可通过指定配置操作来自定义。如果指定了空配置操作,则约定将生成列名。如果在对象模型公开了外键属性,则使用 HasForeignKey 方法。并非所有关系都支持在对象模型公开外键属性

83110

Nhibernate_nhibernate与ef区别

这里是我们要做: 1. 在数据库创建把.Net类持久化对应. 2. 创建需要被持久化.Net类. 3....步骤1:创建数据库 我们正在做是一个非常简单NH示例.在这个例子里面,我们实现一个基本用户管理子系统.我们将会使用一个user(sql server 2000): use NHibernate...:第一个tag是class,这里我们把类型名(类名和Assembly名)映射到数据库user(这里和hibernate有些不同,我们必须告诉NH这个类从哪儿来.这个差异是由.Net和Java Reflect...name"属性值就是我们写.Net类属性,column属性值就是在数据库与'Net类属性对应字段名.type属性是可选(如果你没有标明,NH会给出一个最适合),但是推荐做法是带上这个属性...让我们返回到"id" tag,你可能会猜想这个tag和映射到Primary Key有关.正确.ID tag格式和Property tag相似.我们从Property(name)映射到目标数据库字段

55130

Entity Framework 约定

,这时我们可以通过Fluent API 来忽略指定模型映射到数据库,代码写在EF上下文中: protected override void OnModelCreating(DbModelBuilder...id属性,会查找定义成***类名称+id***属性这个属性作为主键)。...例如我们上一小节定义类 Department,类没有名称为id属性,但是存在名称为类名称+id属性***DepartmentId***,因此DepartmentId属性,将会被映射为自增长主键...二、关系约定 在数据库,我们可以通过多张关联查询出数据,这多张之间关联,就是他们关系。同样,也可以在模型定义这样关系。...简单说就是:一个复杂类型作为已存在对象属性,EF会将复杂类型类映射到已存在,已存在包含这些,而不是复杂类型映射成另外单独一张

1.3K10

NHibernate总结

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

89140

Nhibernate_juan benet

在数据库创建把.Net类持久化对应. 2. 创建需要被持久化.Net类. 3. 创建映射文件,以告诉NH怎样持久化这些类属性. 4....步骤1:创建数据库 我们正在做是一个非常简单NH示例.在这个例子里面,我们实现一个基本用户管理子系统.我们将会使用一个user(sql server 2000): use NHibernate...:第一个tag是class,这里我们把类型名(类名和Assembly名)映射到数据库user(这里和hibernate有些不同,我们必须告诉NH这个类从哪儿来.这个差异是由.Net和Java Reflect...让我们暂时跳过”id” tag,先说property节点.”name”属性值就是我们写.Net类属性,column属性值就是在数据库与’Net类属性对应字段名.type属性是可选(如果你没有标明...让我们返回到”id” tag,你可能会猜想这个tag和映射到Primary Key有关.正确.ID tag格式和Property tag相似.我们从Property(name)映射到目标数据库字段

35450

NHibernate详解

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

53430

01-EF Core笔记之创建模型

默认情况下,如果你类型包含一个字段,那么EF Core都会将它映射到数据库,导航属性亦是如此。...Fluent API进行配置: //包含类型 modelBuilder.Entity(); //包含属性,又叫做阴影属性,它会被映射到数据库 modelBuilder.Entity...EF是实体框架,它实体会映射到关系型数据库。所以通过关系型数据库之间关系更容易理解实体关系。...继承 关于继承关系如何在数据库呈现,目前有三种常见模式: TPH(table-per-hierarchy):一张存放基类和子类所有,使用discriminator区分类型,目前EF Core...):基类和子类不在同一个,子类包含基类所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,基类和子类数据存储在同一个

3K20

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

使用单继承可以不用Join多个查询效率高,而且在Domain Model属性提示到父类或者下降到子类时,数据库模型不用更改。...其缺点就是一个数据比较多,而且很多列为空,不过现代数据库对空压缩处理已经比较好了,不会产生大量空造成性能问题和磁盘空间浪费。...在NHibernate中经常会遇到通过父类Repository来查询子类情况,比如现在有一个抽象Employee对象,下面有OfficeUser和Teacher两个具体对象,这两个对象都有其特有的属性...我们可以OfficeUser和Teacher都保存到Employee,然后建立了一个EmployeeRepository,使用Employee作为Query入口,那么如果要查询Employee中所有的...Teacher,虽然这在C#是一回事,但是NHibernate会对其理解不一样,所以必须这么写,否则查询不出来。

31420

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

ShardingCore - EF Core分分库读写分离扩展。...PgSql 数组类型等; 支持 丰富表达式函数,以及灵活自定义解析; 支持 导航属性一对多、多对多贪婪加载,以及延时加载; 支持 读写分离、分分库、过滤器、乐观锁、悲观锁; 支持 MySql/...主要特点: 与Dapper一样,它很快,因为它使用动态方法生成 (MSIL) 值分配给属性。 像Massive一样,它现在也支持动态 Expandos。...与Massive一样,它以单个文件形式提供,您可以轻松地将其添加到任何项目或编译(仅限 V5)。...内存高效- 它提取并缓存您对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程重用它们。 动态和混合- 它提供了成熟 ORM 一些高级功能。

5.7K11

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

EF Core 入门》篇,我们简单通过两个类演示了一下EF增删改查等功能。细心小伙伴可能看了生成DDL SQL 语句,在里面发现了些端倪。没看小伙伴也不急,这就贴出来。...对于其他属性,EF会自动按照同名形式映射到数据。 对于外键,如果在类里添加了引用类型,而这个引用类型也在EF上下文中,EF会把这种属性称为导航属性。...同时如果在一方这边设置了集合类型导航属性,那么EF会自动到目标类里寻找外键属性。 说完了一对一和一对多,那么多对多呢? 如果没有声明的话, EF会生成一个中间。 2....[Column] 表示,用来设置一些基本参数,比如类型、名称 [Required] 表示该在插入数据库时不能为空 使用注解进行相关配置相当简单,但是这样不可避免需要修改模型类而且需要引入额外命名空间...var property = builder.Property(t => t.Name); 获取一个与属性Name相关联PropertyBuilder实例,通过这个实例可以配置属性与数据库关系。

2.6K21
领券