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

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.2K10

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.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    由于在项目中使用了NHibernate来作为ORMapping构建数据访问层,那么就必须要配置Object和DataTable的映射。...最早的项目中,我们使用了最传统的XML配置文件的方式编写映射关系,但是这样太麻烦,每次修改class和表时都要去修改对应的XML文件,而且还容易出错,一定有疏忽遗漏的地方,还不容易找出错误,所以在第二个项目中...,我们使用了Fluent NHibernate的Mapping方式代替XML配置。...使用Fluent NHibernate的最大好处是降低了出错的机会,因为Fluent Nhibernate的配置是使用C#来编写,可以智能感知,而且还能编译,不像原始的XML配置,写错了都不知道。...我们只需要定义好映射的规则,就可以不对每个表和类分别编写映射配置,而是按照规则进行自动的Mapping工作。这样在修改class或者DataTable时,只需要修改类和表即可,不需要再修改配置文件。

    1.7K10

    【IT运维】端口映射的失败,并非端口映射本身的配置错误

    在多年的IT运维生涯中,端口映射是每次调试路由器和防火墙都必备的配置,算是比较简单的工作内容了。 但是,直到现在,还是经常碰到端口映射失败来求助的,今天就带大家来看两个经典的案例。...好家伙,一个页面都没放得下,这么多端口,就没一个映射出去的,也是没谁了。 仔细看了一下配置,除了有个勾选项一定要帮他去除以外,其他的配置都是正确的,并没有错误的地方。...但是,即使此处勾选上了,也不会影响端口映射本身,所以说,端口映射的失败,并非端口映射本身的配置错误,而是另有原因。...仔细看了一遍客户需要映射的端口,别看一个页面都放不下,其实也就三四台服务器的端口要做映射,这样的话,显然不用每个端口映射都去新建一条安全策略了,不单是做起来累,还加重了防火墙系统的负担。...当我远程登录爱快路由器、打开“端口映射”的时候,我似乎发现了新大陆,原来端口映射还可以这样配置? 难怪映射不出去啊,4台服务器挤在一个3389端口,出得去才是奇怪的事情。

    3.5K21

    流畅的python

    流畅的python中有很多奇技淫巧,整本书都在强调如何最大限度地利用Python 标准库。...OrderDict: 这个类型在添加键的时候,会保存顺序,因此键的迭代顺序总是一致的 ChainMap: 该类型可以容纳数个不同的映射对像,在进行键的查找时,这些对象会被当做一个整体逐个查找,直到键被找到为止...Counter: 这个映射类型会给键准备一个整数技术器,每次更行一个键的时候都会增加这个计数器,所以这个类型可以用来给散列表对象计数,或者当成多重集来用。...defaultdict:处理找不到的键的一个选择 当某个键不在映射里, 我们也希望也能得到一个默认值....print locals() for i in ['a', 'b', 'c']: locals()[i] = 1 print locals() print a # 错误

    2.7K10

    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

    67550

    SpringBoot 系列 JPA 错误姿势之 Entity 映射

    本篇为 JPA 错误使用姿势第二篇,java 的 POJO 类与数据库表结构的映射关系,除了驼峰命名映射为下划线之外,还会有什么别的坑么? I. 映射问题 1....错误 case java 变量命名推荐的是驼峰命名方式,因此与数据库中字段的下划线方式需要关联映射,通过 jpa 的相关知识学习,我们知道可以使用@Column注解来处理,所以有下面这种写法 @Data...createTime; @Column(name = "update_time") private Timestamp updateTime; } 从命名上就可以看出上面这种 case 是错误的...正确姿势二 除了上面的 case 之外,还有另外一种通用的方式,实现自定义的PhysicalNamingStrategy,实现字段映射 比如我们自定义JpaNamingStrategyStandardImpl...一灰灰 Blog 尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现 bug 或者有更好的建议,欢迎批评指正,不吝感激 下面一灰灰的个人博客,记录所有学习和工作中的博文,

    1.3K20

    Entity Framework 和NHibernate的区别

    今天在Boy's (小气的神) BLOG上看到一篇精彩的文章 Astoria to SQLite to Entity Framework to 建立你的ORM观念 .文章说到了很多精彩的内容,从SQLite...从个人感受上看,NHibernate显然是从上而下(Top-down)的方式,天然的POCO支持就是最好的佐证。...其实ORM和DP的存在就是要实现这两个方向的能力和支持,否则就没有存在的必要,因为自上而下(Top-down)和自下而上(Bottom-up)两种方式由来已久,解决这两个方向的问题,ORM工具或E/R模型编程未必是最好的方式...同样仔细想想Entity Framework(也许NHibernate也是)在从外向里(Outside-in)方向也提供了支持,这也就是Dsimmons为代表的EF大佬经常说的,Entity Framework...从上面的描述上可以很清楚的看出Entity Framework和NHibernate的区别,虽然他们都是ORM工具,他们在ORM的各个方向的侧重是不一样.

    1.1K70

    流畅的Python笔记.1

    可变序列 list,生成器的表达式可以用来创建任何类型的序列,它本身没有容器结构,存粹实现了迭代的功能,这是它实现的内在....元组拆包 这个可以应用带任何可以迭代的对象上面去。唯一的硬性要求是,被可迭代对象中的元素数量必须根接受这些元素的元组的空档数是一致的。其实可迭代的元素拆包这个说法也流行起来了。...最好的辨认方法就是平行赋值,也就是一个可迭代对象里的元素,一并赋值到对应的变量组成的元组中。...写到了这里,一定要注意顺序: fun(arg,*args,**kwargs) 一定要按照这个来写,否则会出现错误。...后者可以是由数个字符串组成的可迭代的对象,或者是由空格分隔开的字段名组成的字符串。

    69920

    6个值得收藏的.NET ORM 框架

    它并非一个全功能的 ORM,而是一个高效的扩展,能将 ADO.NET 的查询结果极其快速地映射到你的 C# 对象上。...NHibernate:功能巨匠NHibernate 是 Java 世界著名的 Hibernate 框架的 .NET 版本,是 .NET 平台最老牌、最强大的全功能 ORM。...维护已在使用 NHibernate 的大型遗留系统。需要二级缓存等高级 ORM 特性的项目。...混合操作:既支持像 Dapper 一样执行原始 SQL,也提供了流畅的、强类型的 CRUD 操作 API(如 Query、Insert、Update)。...它是一个轻量级的 ORM,旨在通过约定和简洁的 API 提供一种直观、无障碍的数据库操作体验。优点API 优雅:提供了非常直观和流畅的强类型 API,可以减少手写 SQL 的需要。

    7800

    NHibernate中关于Inverse的理解和使用

    在项目中NHibernate进行ORMapping,操作数据库变得非常简单,但是NHibernate中有很多特性不是很容易理解,比如Inverse这个功能就是其中的一个。...在使用NHibernate进行数据库操作的时候,比如数据插入的时候,经常用到级联功能,比如最常见的就是一个订单对应多个明细行,在保存订单时只需要Save订单对象即可,订单下的所有明细行会级联保存。...NHibernate Cookbook中是这样说的: To work around this mismatch, NHibernate ignores one side of the bidirectional...如果在Mapping配置Order的Item时设置inverse="true",那么NHibernate就会使用OrderItem的Order引用作为关联。...总结: Inverse用于设置双向关联时Nhibernate在设置外键时依赖的对象,默认Inverse=False,一对多时表示依赖一端的集合,如果为True表示依赖多段对象中对一端对象的引用。

    73330

    Fluent NHibernate之旅二--Entity Mapping

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

    1.5K90

    NHibernate介绍「建议收藏」

    C#可用以解决对象/关系数据库映射的工具有多种,常见的有EF (Entity Framework)、NHibernate、iBATIS等,各自的优缺点及适用场景在此不做讨论,本文只对如何使用NHibernate...NHibernate是一个面向.NET环境的对象/关系数据库映射工具。 1. 创建项目文件 在Visual Studio开发工具里创建需要的项目结构。 2....创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然在很多案例中这可能是一对一关系,但这并不是必定的。...class元素表示到单个POCO的映射。name表示上面的程序集和命名空间中的类名,table属性告诉NHibernate数据库中的哪个表或者视图将被映射。...property标签是见得最多的标签。它简单地映射一个到数据表或者视图中对应字段的映射。

    1.2K20

    NHibernate学习笔记之一,Hello world!

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

    97820
    领券