Fluent NHibernate 映射为 Bag 还是 List?有什么区别?
映射到需要由其父级管理的实体列表的最佳实践是什么?
What's the best practice to map to a list of entities that need to be managed by their parent?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
区别在于语义:
但是,bag 和 list 都可以用 IList<> 表示;在代码中 - 完全没问题,但你必须记住,你不能依赖包中物品的顺序。
选择如何映射列表时,请选择最适合您的收藏的选项 - 如果您不需要订单,请选择包,如果您需要订单 - 选择列表。
旁注:可以控制包中项目的顺序 - 您必须使用适当的 sql 表达式指定 order-by 属性。但是,不要使用它来模拟 list 行为 - 直接使用 list 。当顺序是某些其他属性的结果时,例如按上次修改的时间戳对实体进行排序,则应使用 bag 的 Order-by 属性。
Difference is semantic:
However, both bag and list can be represented with IList<> in code - that's perfectly ok, but you have to remember that you cannot rely on order of items in a bag.
When choosing how to map your list, choose the option that best matches your collection - if you don't need order, choose bag, if you need order - choose list.
Sidenote: there's a possibility to control order of items in bag - you have to specify order-by attribute with appropriate sql expression. However do not use this to emulate list behavior - use list directly. Order-by attribute for bags is meant to be used, when order is a result of some other attributes - like ordering of entities by timestamp of last modification.
我发现的所有示例都使用 IList,这就是我在代码中使用的。
我认为 Bag 可能是原始 Java Hibernate 的遗留物 - 我依稀记得读过一篇大意如此的帖子。
All the examples I've found use IList<>, and that's what I use in my code.
I think Bag may be a leftover from the original Java Hibernate - I vaguely remember reading a posting to that effect.