我有一种情况,我有几个多对多的关联。在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
但它确实没有回答我的担忧。
答案 0 :(得分:2)
这个问题很模糊。
为什么你认为多对多关系会导致性能问题?你有没有想过你的申请?
乍一看,如果修改代表一个版本或更改为一个页面,它应该是一对多,而不是多对多。也许你有更多这些。