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

NHibernate:映射到字段或属性?

在软件开发中,NHibernate是一个用于.NET平台的对象关系映射(ORM)框架。它允许开发者将数据库表中的数据映射到类的属性或字段上,以便于操作和管理数据。

在NHibernate中,映射可以是到字段或属性。映射到字段意味着数据库表中的数据将被映射到类的字段上,而映射到属性意味着数据将被映射到类的属性上。

映射到字段的优势:

  1. 更好的性能:映射到字段可以提高访问速度,因为字段不需要通过getter和setter方法进行访问。
  2. 更好的封装:映射到字段可以保持数据的封装,使得类的实现细节不会暴露给外部。

映射到属性的优势:

  1. 更好的可维护性:映射到属性可以使得代码更易于阅读和维护,因为属性通常有更具描述性的名称。
  2. 更好的扩展性:映射到属性可以更容易地添加验证和其他逻辑,而无需更改数据库架构。

在实际应用中,映射到字段或属性的选择取决于开发者的需求和偏好。例如,对于需要高性能的应用程序,映射到字段可能是更好的选择,而对于需要更好的可维护性和扩展性的应用程序,映射到属性可能是更好的选择。

腾讯云提供了一系列的云计算产品,可以支持NHibernate应用程序的部署和管理,包括云服务器、数据库、存储、负载均衡、CDN等。具体的产品介绍可以参考腾讯云官方网站:https://cloud.tencent.com/product

总之,在使用NHibernate时,开发者可以根据自己的需求和偏好选择映射到字段或属性,并利用腾讯云提供的云计算产品进行应用程序的部署和管理。

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

相关·内容

NHibernate学习笔记之一,Hello world!

NHibernate是一个面向.NET环境的对象/关系数据库映射框架,主要应用在数据持久层,和其它的ORM框架一样用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...准备工作: 需要使用.NET Framework 2.0上以版本的框架,准备NHibernate框架,本文使用3.3版,到目前NHibernate都还是基于.net framework 2.0,官方下载地址...开始做一个简单的增删改查示例,如图1示例:  图1 1、创建数据库与表,这里假设使用NibernateDemo数据库,Users表包括(id,name,pwd)字段,id是主键自动增长,name与pwd...3、编写实体类(POCO,Plain Old CLR Objects),映射文件包含POCO类映射到一个或者多个数据库表的元数据信息。User.cs文件如下所示。...,该文件必须输出到Bin目录中,否则会报错“xxx is not mapped”,如图3所示具体方法是:选择User.hbm.xml文件->属性->生成操作,设置这个属性的值为“嵌入的资源” 图3 5

57420

Nhibernate_nhibernate与ef区别

今天说一说Nhibernate_nhibernate与ef区别,希望能够帮助大家进步!!! 什么是NHibernate?...步骤2:创建.Net类: 当我们这样一堆的用户的时候,我们需要某种对象来保存.NH是通过reflection对象的属性来工作的,所以我们给需要持久化的对象添加属性.一个对应于上面数据库结构的类可以写成这个样子...DateTime"/> 让我们来看看这个有趣的映射文件:第一个tag是class,这里我们把类型名(类名和Assembly名)映射到数据库中的...name"属性值就是我们写的.Net类中的属性,column属性值就是在数据库中与'Net类属性对应的字段名.type属性是可选的(如果你没有标明,NH会给出一个最适合的),但是推荐的做法是带上这个属性...让我们返回到"id" tag,你可能会猜想这个tag和映射到表的Primary Key有关.正确.ID tag的格式和Property tag的相似.我们从Property(name)映射到目标数据库的字段

55030

NHibernate详解

NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。...NHibernate通过对象属性的反射来工作,因此我们需要添加我们希望持久化的对象属性。...我们需要一种方式去让NHibernate知道如何从一个映射到另一个。这个任务依赖于映射文件来完成。...简要看一下,你将发现NHibernate所要做的工作。name属性的值正是我们.Net 类的属性,column属性值将是我们数据库里的字段。...我们映射属性到目标数据库的字段。 内嵌的generator 标签告诉NHibernate 如何生成主键(它将恰当的为你生成主键,不管你指定何种类型,但你必须告诉它)。

53130

Nhibernate_juan benet

步骤2:创建.Net类: 当我们这样一堆的用户的时候,我们需要某种对象来保存.NH是通过reflection对象的属性来工作的,所以我们给需要持久化的对象添加属性.一个对应于上面数据库结构的类可以写成这个样子...DateTime”/> 让我们来看看这个有趣的映射文件:第一个tag是class,这里我们把类型名(类名和Assembly名)映射到数据库中的...让我们暂时跳过”id” tag,先说property节点.”name”属性值就是我们写的.Net类中的属性,column属性值就是在数据库中与’Net类属性对应的字段名.type属性是可选的(如果你没有标明...,NH会给出一个最适合的),但是推荐的做法是带上这个属性.hibernate用户会注意到,在type属性值里,我们给出了长度值,这是因为ADO.NET需要这样做....让我们返回到”id” tag,你可能会猜想这个tag和映射到表的Primary Key有关.正确.ID tag的格式和Property tag的相似.我们从Property(name)映射到目标数据库的字段

35450

dotnet C# 基础 为什么 GetHashCode 推荐只取只读属性字段做哈希值

那在 GetHashCode 方法里面,所输出的哈希值的计算,是否也需要使用此类型的所有字段属性共同计算出来?...如果在 GetHashCode 里面使用的字段属性非只读,那么 ReSharper 将会警告你这是不安全的。...,所获取到的 GetHashCode 的值是不包括未来对非只读属性字段变更的防御的。...如果此时在 GetHashCode 里面,使用了非只读字段属性,将会挖一个坑。...也许某个逻辑变更了这些非只读字段属性的时候,影响了 GetHashCode 的返回值从而影响了哈希容器的行为 这就是为什么 ReSharper 警告不要在 GetHashCode 里面使用非只读字段属性进行制作哈希值的原因

56920

NHibernate VS IbatisNet

NHibernate对数据库结构提供了较为完整的封装,NHibernate的O/R Mapping实现了PO 和数据库表之间的映射,以及SQL 的自动生成和执行。...具体的SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段射到指定PO。...使用IbatisNet提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的DotNet对象,这一层与通过NHibernate实现ORM 而言基本一致,而对于具体的数据操作,NHibernate会自动生成...系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的 SQL 语句(存储过程)才能达到系统性能设计指标。在这种情况下 IbatisNet 会有更好的可控性和表现。...类似的,如果涉及到数据库字段的修改, NHibernate 修改的地方很少,而 IbatisNet 要把那些 sql mapping 的地方一一修改。 6 .

71770

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

可以设置一个在事务之间的进程级集群级的二级缓存。 ISession - NHibernate.ISession: 一个单线程、短生命周期的对象,表示从应用程序和数据持久化之间一个连接。...ITransactionFactory - NHibernate.Transaction.ITransactionFactory: 可选的,事务实现工厂,不对应用程序公开,但开发者可以对其进行扩展实现...dialect 数据库方言,表示NHibernate连接的数据库是什么,该用哪种格式解析关系映射到数据库SQL语句 default_schema 默认的schema,用来设置连接字符串连接的数据库默认的...max_fetch_depth 最大递归深度,表示一次查询中直接加载的导航属性深度。默认是不直接加载导航属性,基于延迟加载的逻辑,由实际使用时才从数据库中加载数据。...有几个候选值:createcreate-drop、update等。

1.1K20

NHibernate 代码映射实体类

NHibernate 代码映射实体类 关于代码映射 NHibernate 3.2 自带了代码映射机制, 作为 xml 映射之外的一种映射方式, 由于推出的时间比较晚, 所以资料相对比较少, 而且与社区版的...下面就通过一个实例来说明怎么使用 NHibernate 自带的代码映射。 实体关系 要映射的类关系图如下: ?...ProductMapping : ClassMapping { public ProductMapping() { // 此处添加映射代码 } } 映射到数据表...使用 Table 函数将类映射到制定的数据表: Table("product"); 标识映射 使用 Id 函数映射标识, NHibernate 提供了内置的工具类来简化代码: Id( m =>...使用 Property 函数映射属性NHibernate 提供了内置的工具类来简化代码: Property( m => m.Name, map => { map.Column

86810

盘点 .NET 比较流行的开源的ORM框架

开源地址:https://github.com/dotnet/ef6 六、NHibernate(国外) NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。...开源地址:https://github.com/nhibernate/nhibernate-core 七、ServiceStack/ServiceStack.OrmLite(国外) 简单的 .NET 的快速...异步同步,选择权在您。(又名异步)(V6) 与严格未修饰的 POCO 归属的几乎 POCO 一起使用。 易于配置,包括开箱即用的流畅配置。...更好的参数替换支持,包括从对象属性中获取命名参数。 通过使用 DynamicMethod 生成消除 Linq 和快速属性分配来获得出色的性能。 查询语言是好的 ole SQL。...(V5) 用于记录异常、安装值转换器和将列映射到没有属性属性的挂钩。

3.9K41

NHibernate介绍「建议收藏」

相比较而言,有些ORM解决方案需要特殊属性,或者是基于模型对象,这些对象又是从特定的基类中继承而来的。 在NHibernate中不用特殊的修饰就可以让对象和持久化层交互。...要注意的是所有需要持久化的属性必须是虚拟的,并且要开启延迟加载,所有数据模型类中的公共方法必须是虚拟的,哪怕它们并没有包含到映射文件中。 通常来讲,最好把所有的属性都设置为虚拟的。...#region 扩展属性 #endregion 扩展属性 #region Rewrite Equals and HashCode...name表示上面的程序集和命名空间中的类名,table属性告诉NHibernate数据库中的哪个表或者视图将被映射。 id元素告诉NHibernate哪个数据库的字段和对应的对象作为一个唯一键来使用。...在本例中,我们使用Id这个字段。 generator元素告诉NHibernate怎样给新实体来创建唯一ID。 property标签是见得最多的标签。它简单地映射一个到数据表或者视图中对应字段的映射。

61420

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

Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,在Nhibernate的书中也相应的推荐了使用FN来进行映射配置,之前写的FN之旅至今还有很多人会来私信我问题,说来惭愧,从...在NuGet下载FluentNhibernate后,会自动下载安装Nhibernate及Iesi。...用ExposeConfiguration方法委托Nhibernate的SchemaExport来创建数据库架构,相信很多NH玩家都会用吧。...这个其实就是AutoMapping在处理映射的时候,都是按照一定的规则去映射的,细心的朋友可能发现,我们的索引字段字段名都是Id,这就是AutoMapping的约定,我们也可以自己来进行配置。...刚我们的测试报错,是因为Employee中的Name是个UserName类,Nhibernate的Component,我在FN之旅四(上)中有介绍到,默认情况下映射根据字段射到数据库的,所以上面的测试会报错

92260

NHibernate教程

一、NHibernate简介 在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。NHibernate是一个面向.Net环境的对象/关系数据库映射工具。...对象/关系数据库映射(object/relational mapping (ORM))这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...NHibernate除了能将一张表映射为一个对象,还可以将表间关系变为对象的属性。例如学生和课程间的多对多关系就可以转化为学生类中的一个课程集合的属性。...二、NHibernate使用步骤 1.为系统引入NHibernate的库,并且配置NHibernate; 2.新建一个将要持久化.Net对象的表; 3.构建一个需要被持久化的.Net类; 4.构建一个可以让...NHibernate知道如何完成ORM映射的XML文件; 5.使用NHibernate的API来编程 三、NHibernate的使用 1.

33010

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

这个库的目标是通过不需要任何属性基类继承来保持你的 POCO 纯净。 Dapper-FluentMap - Dapper的扩展。 Dommel - Dapper的CRUD操作。...  NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。...NHibernate社区网站 - https://nhibernate.info GitHub地址:https://github.com/nhibernate/nhibernate-core SmartSql...与Massive一样,它以单个文件的形式提供,您可以轻松地将其添加到任何项目编译(仅限 V5)。...类型化的.NET ORM,OrmLite 的目标是提供一个方便、DRY、无配置、与 RDBMS 无关的类型包装器,该包装器与 SQL 保持高度亲和性,公开直观的 API,生成可预测的 SQL 并干净地映射到断开连接和数据传输对象

5.7K11

c# 常用框架整理

你能够用它来为执行一个作业而 创建简单的复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。...对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...SharpSerializer可以序列化Xml和自己的二进制格式,还可以序列化Json等其他文本格式其他数据加密,压缩,优化等二进制流。...EntityFramework4.0和MVC3.0,使用Razor模板引擎,有很强的插件机制,包括支付配送功能都是通过插件来实现 的,基于xml的多语言版本,非常灵活的语言切换功能,包括在后台都能同时编辑产品的中英文属性...你 的代码仅仅和对象关联,NHibernat自动产生SQL语句,并确保对象提交到正确的表和字段中去.大量减少开发时人工使用SQL和ADO.NET处理 数据的时间.

4.7K10

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

本文链接:https://blog.csdn.net/CJB_King/article/details/53456282 准备工具:VS2015(版本不限) ,Nhibernate包,和MySql...mysql.data.entity.dll mysql.visualstudio.dll mysql.web.dll 步骤:1.打开数据库,新建一个数据库,名字随意,添加一个表,名字随意,然后添加两个字段...,一个字段名称为name,一个为age,好了表建好之后,我们开始使用很简单很简单一个C#连接MySql数据库的代码 using System; using System.Collections.Generic...包来实现一个很简单的对数据增删改查的操作,这一次需要用到我们之前下载的Nhibernate包里面的文件,全部dll文件引入之后,“引用”下面应该是这样的: ?..._sessionFactory= Fluently.Configure().Database( //连接数据库需要的配置和属性

1.4K30
领券