作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 NHibernate 和 Fluent NHibernate 设置示例项目。我正在使用 example mappings来自 Fluent NHibernate 网站。
我的问题是关于 Store 和 Product 之间的多对多映射。看起来(在查看生成的 SQL 时),在将产品添加到商店时,NHibernate 从属于该商店的关联表 (StoreProduct) 中删除所有记录,然后再次插入所有记录,现在包括关联到我添加的新产品。
这是默认行为还是我遗漏了什么?每次我需要添加一个关联时,删除并重新插入所有关联似乎不是很有效。
最佳答案
这是预期的行为。我相信这应该只有在您使用他们在示例中使用的 bag 映射策略时才会发生。一个袋子表示有一个无序的集合,可以有重复的项目。因为包中的项目不是唯一的,所以 NHibernate 无法轻易判断您何时从包中添加或删除了项目。 NHibernate 最简单的事情就是删除所有关联,然后重新添加。
自从我玩多对多映射以来已经有一段时间了(我通常只映射为两个一对多关系)但我相信如果你使用不同的结构,例如,一个集合(不允许重复)你应该发现行为是不同的。当然,您应该使用对您的应用程序最具语义意义的任何构造。
关于NHibernate 多对多效率低下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1906923/
我是一名优秀的程序员,十分优秀!