首页
学习
活动
专区
圈层
工具
发布

NHibernate 代码映射实体类

NHibernate 代码映射实体类 关于代码映射 NHibernate 3.2 自带了代码映射机制, 作为 xml 映射之外的一种映射方式, 由于推出的时间比较晚, 所以资料相对比较少, 而且与社区版的...下面就通过一个实例来说明怎么使用 NHibernate 自带的代码映射。 实体关系 要映射的类关系图如下: ?...; 标识映射 使用 Id 函数映射标识, NHibernate 提供了内置的工具类来简化代码: Id( m => m.Id, map => { map.Column("id...使用 Property 函数映射属性, NHibernate 提供了内置的工具类来简化代码: Property( m => m.Name, map => { map.Column...Attribute Mapping 相比, 对原来的 POCO 实体类没有污染 (Attribute) ; NHibernate 自带, 可以说是一等公民, 而 Fluent Mapping 是第三方维护的

1.3K10

NHibernate 多对多映射的数据更新

NHibernate 多对多映射的数据更新 最近在用 NHibernate 做多对多更新时突然发现 NHibernate 更新的策略很差, 对多对多关系的更新居然是先全部删除再插入全部数据, 感觉非常奇怪..., 再添加一个新的角色, NHibernate 生成的 SQL 语句如下(仅包含对关系表 User_Role 的操作): DELETE FROM [User_Role] WHERE [UserId] =...Tip: Use set for many-to-many associations 发现了解决方案, 将多对多的映射的 bag 改为用 set , 问题终于得到了解决, 改过后的映射如下: Set(...不只是多对多, 如果你的集合需要更新, NHibernate 推荐的是: 19.5.2....sess.Flush(); 由此可见, bag 在多对多映射更新时性能较差, 如果不需要更新,则可以放心使用, 在需要更新时则 set 是更好的选择。

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

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

    由于在项目中使用了NHibernate来作为ORMapping构建数据访问层,那么就必须要配置Object和DataTable的映射。...,我们使用了Fluent NHibernate的Mapping方式代替XML配置。...使用Fluent NHibernate的最大好处是降低了出错的机会,因为Fluent Nhibernate的配置是使用C#来编写,可以智能感知,而且还能编译,不像原始的XML配置,写错了都不知道。...我们只需要定义好映射的规则,就可以不对每个表和类分别编写映射配置,而是按照规则进行自动的Mapping工作。这样在修改class或者DataTable时,只需要修改类和表即可,不需要再修改配置文件。...对于多对多的关系,把两个类对应的表名进行排序,将小的排前面,然后将两个表名连接起来,中间使用“_”分割。

    1.9K10

    Entity Framework 和NHibernate的区别

    从个人感受上看,NHibernate显然是从上而下(Top-down)的方式,天然的POCO支持就是最好的佐证。...至于从里到外(Inside-out),从外向里(Outside-in)是真正显示ORM工具或E/R模型编程模型威力的地方,因为99%的现实世界,以及数据库都不是同步也无法保持同步的,那么提供从里到外,从外向里两个方向的支持是非常重要的...其实ORM和DP的存在就是要实现这两个方向的能力和支持,否则就没有存在的必要,因为自上而下(Top-down)和自下而上(Bottom-up)两种方式由来已久,解决这两个方向的问题,ORM工具或E/R模型编程未必是最好的方式...同样仔细想想Entity Framework(也许NHibernate也是)在从外向里(Outside-in)方向也提供了支持,这也就是Dsimmons为代表的EF大佬经常说的,Entity Framework...相反从里到外(Inside-out)的方式,我认为是比较困难的,先假设我们先拥有一种万能的Mapping/ORM技术或工具,然后我们再使用它来连接现实世界/OPP和数据存储/数据库之间的变化和gap,这个

    79250

    C#——Nhibernate探索

    这里有两个类库;可以分析得出,这两个类库是要被引用的。 类库拥有对应的XML,没找到具体使用该XML的方法。所以暂时不去理他。 NHibernate.pdb应该是没有用的。估计是作者忘记删除了。...调查结果: 对象与数据库的映射是保存在XML文件中的,于是我配置XML映射文件如下。 该XML文件的属性,要求设置其生成操作为【嵌入的资源】。 但我怕它丢失,还给他设置了始终复制的属性。...public ISession GetSession() { return _sessionFactory.OpenSession(); } } 因为我们没有显示设置数据库连接字符串...= new NHibernateSampleFixture(); f.GetCustomerByIdTest(); } } 测试结果是失败,因为,我们还没有在任何地方设置数据库连接字符串...这句话的意思是,映射我创建的那个类库。 我推断,Nherbinate是读这个配置文件,然后到这个程序集里,反射查询那些poco对象。

    95830

    NHibernate总结

    现在的项目中数据访问使用的是NHibernate的一个ORM框架,小弟也是在后期加入项目组,之前对NHibernate就一直没有接触过,所以一直在学习NHibernate,都是一些很基础的一些东西,写出来总结一下...NHibernate不仅仅管理.NET 类到数据库表的映射(包括.NET 数据类型到SQL 数据类型的映射),还提供数据查询和获取数据的方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据的时间...NH.Data层为Nhibernate操作相关,其中DBConnect.cfg.xml文件为数据库连接文件(按照模板修改即可),NHData.cs包含增删改查操作,NHibernateHelper.cs...这正是NHibernate映射文件发挥作用的地方。映射文件包含了对象/关系映射所需的元数据。元数据包含持久化类的声明和属性到数据库的映射。...“内容”,这里需要修改为“嵌入的资源”生成,因为NHibernate是通过查找程序集中的资源文件映射实体。

    1.5K40

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

    ISessionFactory - NHibernate.ISessionFactory: 一个基于单数据库的已编译的映射缓存,它是持久不变的且线程安全(额,这句话是从它的文档翻译过来的)。...状态分为以下三种: transient 暂存的、临时的 该状态的对象并没有被持久化上下文捕获到,简单来讲就是刚被创建,还没有从数据库/持久化上下文中获取到主键信息。...dialect 数据库方言,表示NHibernate连接的数据库是什么,该用哪种格式解析关系映射到数据库SQL语句 default_schema 默认的schema,用来设置连接字符串连接的数据库默认的...(我记得有update,但文档中没有这个选项) 以上是我们常用的一些配置内容,当然还有更多的配置,我并没有在这里一一讲明,留待以后吧。 4....总结 这是一篇枯燥乏味的说明文,主要介绍了Nhibernate的基本内容。下一章我们来试试,如何创建Nhibernate的映射配置。

    1.8K20

    NHibernate详解

    4.构建一个让NHibernate知道如何连接数据库的配置文件 5.使用NHibernate的API 第一步:写构建表的SQL 这里我们将使用的是一个非常简单的例子...第三步:写映射文件 现在我们有数据表和需要去映射它的.Net类。我们需要一种方式去让NHibernate知道如何从一个映射到另一个。这个任务依赖于映射文件来完成。...第一个有趣的标签是class。这里我们将映射类型名称(类名,装配件)到我们数据库中的User表,这里和Hibernate有一点点的不同。你将不得不告诉NHibernate从何处提取对象。...Visual Studio.Net 不会重新编译有改变的映射文件。 第四步:为你的数据库产生一个配置文件 我们至今还没有告诉NHibernate 去哪里连接数据库。...连接的配置信息(如果你愿意,你可以在代码中实现)。

    1.4K30

    adb connect的远程连接(端口映射&端口转发)

    ,并且已经采用内网穿透的方式,这时候找到我希望能采用无线的方式来连接手机。...何为端口映射?何为端口转发? 端口映射(Port Mapping): 端口映射是一种将外部网络流量导向到内部网络设备或服务的过程。...在端口映射中,路由器将外部IP地址和端口与内部网络中的设备或服务的IP地址和端口之间建立映射关系。这样,当外部网络请求到达路由器时,路由器会将其转发到正确的内部设备或服务。...例如,如果您在家庭网络中运行一个Web服务器,并且您的路由器支持端口映射,您可以将路由器的公共IP地址的特定端口映射到Web服务器的私有IP地址和端口上。...其次,我们打开手机的无线调试,再给这两级路由器配置好虚拟服务器,也就是端口转发 如果这里没有看懂,我再详细地解释一下,原理就是无线调试时,它会暴露手机的一个端口给局域网,然后局域网主机中的可以通过adb

    2.2K10

    Entity Framework 和NHibernate的区别

    从个人感受上看,NHibernate显然是从上而下(Top-down)的方式,天然的POCO支持就是最好的佐证。...其实ORM和DP的存在就是要实现这两个方向的能力和支持,否则就没有存在的必要,因为自上而下(Top-down)和自下而上(Bottom-up)两种方式由来已久,解决这两个方向的问题,ORM工具或E/R模型编程未必是最好的方式...同样仔细想想Entity Framework(也许NHibernate也是)在从外向里(Outside-in)方向也提供了支持,这也就是Dsimmons为代表的EF大佬经常说的,Entity Framework...相反从里到外(Inside-out)的方式,我认为是比较困难的,先假设我们先拥有一种万能的Mapping/ORM技术或工具,然后我们再使用它来连接现实世界/OPP和数据存储/数据库之间的变化和gap,这个...从上面的描述上可以很清楚的看出Entity Framework和NHibernate的区别,虽然他们都是ORM工具,他们在ORM的各个方向的侧重是不一样.

    1.2K70

    NHibernate学习笔记之一,Hello world!

    NHibernate是一个面向.NET环境的对象/关系数据库映射框架,主要应用在数据持久层,和其它的ORM框架一样用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...命名空间下的所有类型,包含持久化类以及对应映射文件所在的应用程序集名称。...持久化类的所有的public的属性必须声明为virtual,否则映射不成功。...4、为POCO类编写写一个数据库映射文件,其实User.hbm.xml映射文件包含了对象/关系映射(ORM)所需的元数据。元数据包含持久化类的声明和属性到数据库的映射。...                throw;             }             finally             {                 //关闭与ADO.NET的连接

    1.2K20

    NHibernate教程

    NHibernate是一个面向.Net环境的对象/关系数据库映射工具。...NHibernate除了能将一张表映射为一个对象,还可以将表间关系变为对象的属性。例如学生和课程间的多对多关系就可以转化为学生类中的一个课程集合的属性。...由此可见,NHibernate不仅仅管理.Net类到数据库表的映射,还提供数据查询和获取数据的方法。因此采用NHibernate,可以大幅度减少开发时人工使用SQL处理数据的时间。...NHibernate知道如何完成ORM映射的XML文件; 5.使用NHibernate的API来编程 三、NHibernate的使用 1....创建.Net类和与其对应的XML文件 (1) 单表的情况 单表的情况就是指该表没有和其他表有关联的情况。这样情况下,可以用软件来辅助产生类和对应的XML文件。

    87810

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

    ,MySQL-FRONT ,Connector/Net(选择.Net&Mono) Nhibernate包可以在VS2015中下载 ,对MySql操作,我用的是MySQL-FRONT,注意要想实现和数据库的链接...先写一个简单的给你定义的数据库中添加一条元素的代码:(不使用Nhibernate的) 前提:先把该用的dll文件,添加到引用里面去不然,会连接不成功,之前下载的Connector/Net(选择.Net&...嗯,如果能够运行成功,说明我们的步骤都是正确的,这就是一个简单的测试,测试成功,说明我们的VS与MySql数据连接是没有任何问题的,只要把该引入的都引入了就不会报什么异常错误之类的,接下来将用C#代码和...Nhibernate包来实现一个很简单的对数据增删改查的操作,这一次需要用到我们之前下载的Nhibernate包里面的文件,全部dll文件引入之后,“引用”下面应该是这样的: ?...帮助类,使用Nhibernate连接数据库,用来得到sessionFactory,然后使用sessionFactory里面的session去操作数据库,代码如下: using System; using

    1.9K30

    Fluent NHibernate之旅

    Fluent NHibernate,有了它,我们可以完全脱离配置文件,不过博客园中介绍Fluent NHibernate的文章非常少,而且官方文档也还没有完全,所以对于我来说也就一点一点摸索起来,这也激起了我写这个笔记的欲望...这是官方的说明,大体的话也就是用编程的方式进行配置,让你能更好的理解,不需要编写复杂的映射文件,它能完全替换NHibernate的映射文件,让你在映射的时候能使用C#的强类型方式。...3、建立一个空数据库(我们使用MSSql2005),数据库名为:MyNHibernate,这个数据库为信任连接。...四、灵活的Fluent      那我们Fluent就没有办法灵活了吗?...使用NHibernate的配置      也就是你可以按照原先的方式进行配置,而读取呢使用Fluent来读取,然后创建SessionFactory,或许你感觉这不是多余了嘛,那是因为还没有讲到Mapping

    1.6K60
    领券