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

流畅的nhibernate映射作为Bag List有什么区别?

在这个问题中,您提到了 NHibernate 映射,这是一个用于将对象映射到关系数据库的对象关系映射(ORM)框架。在 NHibernate 中,Bag 和 List 是两种不同的集合映射策略。

  1. Bag

Bag 是一种非常简单的集合映射策略,它将集合映射到数据库中的一个单独的表。在 Bag 中,顺序信息不会被保留,也就是说,当您从数据库中检索 Bag 集合时,元素的顺序可能与您存储它们的顺序不同。此外,Bag 不能包含重复元素。

  1. List

List 是另一种集合映射策略,它将集合映射到数据库中的一个带有顺序列的表。因此,当您从数据库中检索 List 时,元素的顺序将与您存储它们的顺序相同。List 可以包含重复元素。

在 NHibernate 中,您可以使用 Bag 或 List 来映射集合,具体取决于您的需求。如果您需要保留集合元素的顺序,并且元素不重复,则应使用 List。如果您不需要保留顺序信息,并且元素可以重复,则可以使用 Bag。

总之,Bag 和 List 是两种不同的集合映射策略,它们在 NHibernate 中用于将集合映射到关系数据库。Bag 不保留顺序信息,并且不允许重复元素,而 List 则保留顺序信息,并允许重复元素。

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

相关·内容

NHibernate 多对多映射数据更新

NHibernate 多对多映射数据更新 最近在用 NHibernate 做多对多更新时突然发现 NHibernate 更新策略很差, 对多对多关系更新居然是先全部删除再插入全部数据, 感觉非常奇怪..., 一个角色也可以多个人, 典型多对多关系, 对应映射代码如下: public class UserMapping : ClassMapping { public UserMapping...Tip: Use set for many-to-many associations 发现了解决方案, 将多对多映射 bag 改为用 set , 问题终于得到了解决, 改过后映射如下: Set(...or list without needing to initialize (fetch) the bag elements!...sess.Flush(); 由此可见, bag 在多对多映射更新时性能较差, 如果不需要更新,则可以放心使用, 在需要更新时则 set 是更好选择。

94410

NHibernate 代码映射实体类

NHibernate 代码映射实体类 关于代码映射 NHibernate 3.2 自带了代码映射机制, 作为 xml 映射之外一种映射方式, 由于推出时间比较晚, 所以资料相对比较少, 而且与社区版...Fluent Mapping 和 Attribute Mapping 不同, 其独特设计风格。...下面就通过一个实例来说明怎么使用 NHibernate 自带代码映射。 实体关系 要映射类关系图如下: ?...使用 Bag 方法来映射一对多属性, 比如 Store Staff 属性: Bag( m => m.Staff, map => { map.Table("employee...总结 与 xml 映射以及其它第三方映射相比, 使用 NHibernate 代码映射下面几个优点: 不需要使用 xml 文件即可完成, 可以充分利用 IDE 智能提示, 重构, 以及编译时检查; 与

90010
  • NHibernate总结

    作为备忘。...NHibernate不仅仅管理.NET 类到数据库表映射(包括.NET 数据类型到SQL 数据类型映射),还提供数据查询和获取数据方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据时间...NHibernate目标是对于开发者通常数据持久化相关编程任务,解放其中95%。并请记住NHibernate作为数据库访问层,是与你程序紧密集成。...这正是NHibernate映射文件发挥作用地方。映射文件包含了对象/关系映射所需元数据。元数据包含持久化类声明和属性到数据库映射。...“内容”,这里需要修改为“嵌入资源”生成,因为NHibernate是通过查找程序集中资源文件映射实体。

    91940

    NHibernate联合主键详细示例

    使用NHibernate实现一对多,多对一关联很是简单,可如果要用复合主键实现确实让人有些淡淡疼。虽然很淡疼但还是要去抹平这个坑,在下不才,愿意尝试。...实现一对 和 多对一映射 这步没有多大难度,主要处理好注解顺序即可,以及OneToMany时联合主键如何设置问题.示例代码如下: [Bag(0, Name = "Childs", Cascade...childs没有数据 重载GetHashCode方法问题,返回值应该是联合主键HashCode,优化后实现如下: public override int GetHashCode() {...return (this.Id + "|" + this.GroupNumber).GetHashCode(); //判断缓存是否存在,已此作为Key } 插入数据时报错,提示SqlParameterCollection...索引无效[索引溢出错误] 原因,最初在设计Parent时候,与联合主键共用了一个字段GroupNumber,导致在NHibernate映射转换时候会多计算出一个需要填充值,但SqlParameterCollection

    1.5K80

    NHibernate 缓存

    2、测试 Get 与 Load 方法 session 提供了 Get 和 Load 两个方法, 这两个方法什么区别呢?...NHibernate 二级缓存是可以扩展NHibernate.ControlLib 提供了几个实现, 分别适用于不同场景: NHibernate.Caches.MemCache NHibernate.Caches.Prevalence...也可以在实体类 hbm 映射文件中配置使用二级缓存, 不过在 hibernate.cfg.xml 文件中统一配置是推荐做法。...[Categories] this_ 二级缓存选项 NHibernate 二级几个配置选项, 他们分别是: 实体类以及集合二级缓存配置选项 指定类: <class-cache class="类名称"...以上是在项目中用到二级缓存相关知识整理, 肯定不完整, NHibernate 缓存还有更多地方需要挖掘。

    59911

    Nhibernate_nhibernate与ef区别

    步骤3:编写映射文件(Mapping File) 现在我们了数据库表和.Net类,我们还需要告诉NH怎样在数据库和类之间映射.这就需要映射文件了.最简捷(也是可维护性最好)方法就是为每一个类编写一个映射文件...让我们返回到"id" tag,你可能会猜想这个tag和映射到表Primary Key有关.正确.ID tag格式和Property tag相似.我们从Property(name)映射到目标数据库字段...Tip:如果你使用vs.net编译,设置Build Action,把User.hbm.xml文件作为资源绑定到Asssembly,这样映射文件就成了Asssembly一部分了.后面我们会明白这个步骤重要性...Configuration对象知道所有在.Net类和后端数据库之间映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly("NHibernate.Demo.QuickStart...更好是,你可以从数据库中查询到一个System.Collections.IList: IList userList = session.CreateCriteria(typeof(User)).List

    58230

    NHibernate教程

    NHibernate是一个面向.Net环境对象/关系数据库映射工具。...NHibernate除了能将一张表映射为一个对象,还可以将表间关系变为对象属性。例如学生和课程间多对多关系就可以转化为学生类中一个课程集合属性。...由此可见,NHibernate不仅仅管理.Net类到数据库表映射,还提供数据查询和获取数据方法。因此采用NHibernate,可以大幅度减少开发时人工使用SQL处理数据时间。...NHibernate知道如何完成ORM映射XML文件; 5.使用NHibernateAPI来编程 三、NHibernate使用 1....配置NHibernate (1)NHibernate配置文件两种:在桌面应用程序(WinForm)中为App.config,在网页应用程序(WebForm)中为web.config。

    36210

    NHibernate 缓存

    2、测试 Get 与 Load 方法 session 提供了 Get 和 Load 两个方法, 这两个方法什么区别呢?...NHibernate 二级缓存是可以扩展NHibernate.ControlLib 提供了几个实现, 分别适用于不同场景: NHibernate.Caches.MemCache NHibernate.Caches.Prevalence...也可以在实体类 hbm 映射文件中配置使用二级缓存, 不过在 hibernate.cfg.xml 文件中统一配置是推荐做法。...[Categories] this_ 二级缓存选项 NHibernate 二级几个配置选项, 他们分别是: 实体类以及集合二级缓存配置选项 指定类: <class-cache class="类名称"...以上是在项目中用到二级缓存相关知识整理, 肯定不完整, NHibernate 缓存还有更多地方需要挖掘。

    44110

    Nhibernate_juan benet

    步骤3:编写映射文件(Mapping File) 现在我们了数据库表和.Net类,我们还需要告诉NH怎样在数据库和类之间映射.这就需要映射文件了.最简捷(也是可维护性最好)方法就是为每一个类编写一个映射文件...让我们返回到”id” tag,你可能会猜想这个tag和映射到表Primary Key有关.正确.ID tag格式和Property tag相似.我们从Property(name)映射到目标数据库字段...Tip:如果你使用vs.net编译,设置Build Action,把User.hbm.xml文件作为资源绑定到Asssembly,这样映射文件就成了Asssembly一部分了.后面我们会明白这个步骤重要性...更好是,你可以从数据库中查询到一个System.Collections.IList: IList userList = session.CreateCriteria(typeof(User)).List...如发现本站涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    37250

    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)所需元数据。元数据包含持久化类声明和属性到数据库映射

    59520

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

    Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,在Nhibernate书中也相应推荐了使用FN来进行映射配置,之前写FN之旅至今还有很多人会来私信我问题,说来惭愧,从...FN之旅四至今已经4年多,至今还未更新过此系列,原因很多,最大就是懒惰,哈。...配置 准备工作完成,今天我们要说下FNAutoMapping,之前呢我们都是用了FluentMapping进行手动Map映射,如果可以的话,请大家还是使用之前映射方式,因为AutoMapping很多契约...刚我们测试报错,是因为Employee中Name是个UserName类,NhibernateComponent,我在FN之旅四(上)中有介绍到,默认情况下映射根据字段映射到数据库,所以上面的测试会报错...PS:今天本来心情不错,没想到客人来拉横幅,一直在公司吵闹,害我无法集中精力,估计在文章中会有错地方,大家见谅了。

    95660

    Fluent NHibernate之旅(三)-- 继承

    经过了“开篇”和“简单映射”两篇文章,相信大家对Fluent NHibernate 了一定了解了,FluentNHibernate实际就是对 NHibernate 映射一定扩展,我们能完全利用强类型...、泛型、Lambde表达式等等Vs、Framework等特性简单完成映射工作,同时也能让我们学习NHibernate映射方式,一举夺得,这么好玩东东,有理由不继续完成这个系列吗?...从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前代码,我会另外进行说明 继承 在OOP中,继承作为OO中重要特性,如果NHibernate没有对它支持,...好,我们假设我们产品还有书和手机,他们各自自己属性,我们就简单加一点属性,书作者,手机品牌和型号,我们写这2个Entity Model: public class MobileProduct...,而且现在更新也非常快,后面几张可能说下几种不常见映射和会遇到些麻烦,不过感觉园子里使用NHibernate的人不太多,关注度不多,不过不影响我继续写下去决心,这次也很偶然接触了FNT,确实有好多好地方可以借鉴一下

    68680

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

    Fluent NHibernate之旅系列导航: 一、开篇:ISessionFactory Configuration 二、实体映射:Entity Mapping 三、继承映射:Inheritence...Mapping 四、一对一映射:One-to-One Mapping 场景和数据库设计 延续我们演示范例,用户和订单是非常典型一对多范例。...映射 不得不赞叹一下 Fluent Nhibernate了它,我们映射一切都变得如此简单,先来看看Model吧,用户订单列表,对于用户来说,暂时是不需要排序,所以我们可以使用ISet作为Order...我们在Output中,能看到NHibernate生成Sql语句,测试也成功,说明我们刚刚是立即加载了Orders属性。...如果您在使用Fluent Nhibernate时候也遇到了问题,可以及时与我联系或求助于Fluent Google Groups。 应“亦续缘”要求,我把代码整理了下,发上来,便于大家学习。

    713100

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

    由于在项目中使用了NHibernate作为ORMapping构建数据访问层,那么就必须要配置Object和DataTable映射。...,我们使用了Fluent NHibernateMapping方式代替XML配置。...使用Fluent NHibernate最大好处是降低了出错机会,因为Fluent Nhibernate配置是使用C#来编写,可以智能感知,而且还能编译,不像原始XML配置,写错了都不知道。...我们只需要定义好映射规则,就可以不对每个表和类分别编写映射配置,而是按照规则进行自动Mapping工作。这样在修改class或者DataTable时,只需要修改类和表即可,不需要再修改配置文件。...(比如CostCenter中有public virtual long Id{get;set;},对应表中列COST_CENTER_ID) 对于一对多关系,使用父方类名作为属性名,表中使用父表主键列名作为对应外键列列名

    1.1K10

    Nhibernate入门与demo

    3、怎么搭建Nhibernate?      4、怎么使用Nhibernate?      好,我们就带着这几个问题开始我们Nhibernate旅程。    ...先看一张经典图:      ORM:对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型表示对象映射到基于SQL 关系模型数据结构中去...通俗讲,就是我们操作实体类,然后让ORM框架自动映射到数据库中。      而Nhibernate就是:.Net环境下实现ORM技术一个框架!     ...先看项目整体图,作为初学demo 没有层次,没有优化,只是作为入门一个简单介绍!      第一步:设计数据库中表。建立一个User表。...Nhibernate自动去找Mapping映射! 2、server=.

    34830

    Fluent NHibernate之旅二--Entity Mapping

    本节内容: 简单实体映射 使用自定义类型映射实体属性 NHibernate实体映射(Entity Mapping)做非常好,虽然不是完美,但一些我们经常使用,基本上已经都支持了,而且配置也相对比较简单...我们来看看Id和Map Id(Expression> expression):一看就很明白了,主键嘛,因为了VS,因为了泛型,因为了委托,因为……,我们只需要简单...hbm.xml文件,自己再看一篇,看看NHibernate映射方式,所以是非常好一个方法,我有时候做映射时候,遇到问题都会生成出来,随时查看问题所在,所以说是非常有用一个方法,而且你可以把你映射文件直接用到...二、使用自定义类型映射实体属性 NHibernate支持我们用自定义类型来映射属性,但因为我是初学,我真的不会,当然我在网上找到了相关资料,在此也不多说,就说说Fluent方式吧,在我映射自定义属性时候...,而传统方式作为学习之用。

    1K90

    C#——Nhibernate探索

    这里两个类库;可以分析得出,这两个类库是要被引用。 类库拥有对应XML,没找到具体使用该XML方法。所以暂时不去理他。 NHibernate.pdb应该是没有用。估计是作者忘记删除了。...上网调查后,发现NhibernateCastle框架、LinFu框架、Spring.Net三种。 看起来很复杂,文章很多,写又很复杂,于是我放弃调查,直接尝试使用,首先第一步,直接引用类库。...public virtual int Id { get; set; } public virtual string Name { get; set; } } 接下来建立持久化对象与数据库映射...调查结果: 对象与数据库映射是保存在XML文件中,于是我配置XML映射文件如下。 该XML文件属性,要求设置其生成操作为【嵌入资源】。 但我怕它丢失,还给他设置了始终复制属性。...这句话意思是,映射我创建那个类库。 我推断,Nherbinate是读这个配置文件,然后到这个程序集里,反射查询那些poco对象。

    48930

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

    经过了前面三篇介绍,相信大家对Fluent NHibernate已经一定了解了,在我们学习中,Fluent 也已经进入了RTM版本。...Fluent NHibernate之旅系列导航: 一、开篇:ISessionFactory Configuration 二、实体映射:Entity Mapping 三、继承映射:Inheritence...Mapping 今天我们将说一下ORM中R映射,我们现在数据库大多都是关系型数据库了,所以可以说关系在我们数据库设计中也是非常重要部分,NHibernate也非常重视这一块,但在传统方式中,配置就比较麻烦...数据库关系 数据库关系一般: 1、一对一 2、一对多 3、多对多 开始 结合我们前三个系列示例,我们这一次加一个用户表[User],目的就是存储用户信息所用,再加一个UserDetail,作为用户详细信息...Foreign用法与先前版本一点不同,需要指定propertyName。

    1.2K60
    领券