流利的nhibernate的多对多性能问题

时间:2011-03-20 15:51:47

标签: performance nhibernate c#-4.0 fluent-nhibernate

我有一种情况,我有几个多对多的关联。在12到15之间阅读我已经看到,人们普遍认为多对多关联不是“典型的”,但它们是我能够创建适合我案例的关联的唯一方式,所以我不确定如何进一步优化。

这是我的基本情景。

class Page {
  IList<Tag> Tags { get; set; }
  IList<Modification> Modifications { get; set; }
  IList<Aspect> Aspects { get; set; }
}

这是我的“核心”课程之一,巧合的是我的核心课程之一。我的代码中几乎有一半的对象可以有IList<Page>,其中一些对象IList<T>,其中T有自己的IList<Page>

正如您所看到的,从面向对象的角度来看,这不是一个真正的问题。但是从数据库的角度来看,这开始引入了很多联结表。

到目前为止,它对我来说效果很好,但我想知道是否有人对如何改进这种结构有任何想法。我花了很长时间思考并为了达到所需的适当关联水平,我想不出任何改进它的方法。我唯一想到的是为每个具有IList<Page>的对象创建中间类,但除了引入另一个类之外,它并没有真正执行HasManyToMany尚未执行的操作。它没有扩展功能,据我所知,它不会提高性能。

有什么想法?我也担心这种情况下的主键限制。大多数东西都需要能够拥有这些属性,但页面不能对每个对象都是唯一的,因为它们经常在多个对象之间共享和连接。

所有关系都是片面的。 (也就是说,Page不知道拥有它的是什么。因此,我 没有Inverse()映射HasManyToMany个集合。

另外,我也读过类似的问题:Usage of ORMs like NHibernate when there are many associations - performance concerns

但它确实没有回答我的担忧。

1 个答案:

答案 0 :(得分:2)

这个问题很模糊。

为什么你认为多对多关系会导致性能问题?你有没有想过你的申请?

乍一看,如果修改代表一个版本或更改为一个页面,它应该是一对多,而不是多对多。也许你有更多这些。