NHibernate的多对多效率低下?

时间:2009-12-15 11:50:11

标签: nhibernate fluent-nhibernate

我正在尝试使用NHibernate和Fluent NHibernate设置示例项目。 我正在使用Fluent NHibernate网站上的example mappings

我的问题是关于商店和产品之间的多对多映射。看来(在查看生成的SQL时),当将产品添加到商店时,NHibernate会删除属于该商店的关联表(StoreProduct)中的所有记录,然后再次插入所有记录,现在包括关联到我添加的新产品。

这是默认行为还是我遗漏了什么?每次我需要添加一个关联时,删除和重新插入所有关联似乎效率不高。

1 个答案:

答案 0 :(得分:5)

这是预期的行为。我相信只有当您使用 bag 映射策略时才会发生 ,它在示例中看起来像是在使用它。一个包表示存在可以具有重复项的无序集合。因为袋子物品不是唯一的,所以NHibernate无法分辨您何时从袋子中轻松添加或移除物品。 NHibernate最简单的方法是删除所有关联,然后重新添加。

我玩过多对多映射已经有一段时间了(我通常只是映射为两个一对多的关系)但我相信如果你使用不同的构造,例如,一组(这不允许重复)你应该发现行为是不同的。当然,你应该使用构造对你的应用程序最具语义意义的东西。