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

时间:2009-11-26 20:12:32

标签: fluent-nhibernate

最佳做法是映射到需要由其父级管理的实体列表

2 个答案:

答案 0 :(得分:5)

差异是语义:

  • 如果您的收藏品无序且只能包含每件商品,则应使用设置
  • 一个仍然无序,但是它可以多次包含一些项目(好 - 至少包含多对多映射)
  • 列表是一个已订购的集合,可以多次包含一些项目 - 您有保证,将按照保存的顺序检索项目(NHibernate将管理指定的索引)专栏)

然而,包和列表都可以用IList<>表示。在代码中 - 这是完全正常的,但你必须记住,你不能依赖于包中的物品的顺序。

在选择如何映射列表时,请选择最适合您的收藏的选项 - 如果您不需要订购,请选择,如果您需要订购 - 请选择列表

旁注:可以控制包中物品的顺序 - 您必须使用适当的sql表达式指定order-by属性。但是,请勿使用此功能模拟列表行为 - 直接使用列表。当订单是某些其他属性的结果时,可以使用 bag 的order-by属性 - 例如按上次修改的时间戳排序实体。

答案 1 :(得分:0)

我发现的所有示例都使用 IList<> ,这就是我在代码中使用的内容。

我认为Bag可能是原始Java Hibernate的遗留物 - 我依稀记得读过这个帖子。