C# 处理多对多关系的最干净方法是什么?

C# 处理多对多关系的最干净方法是什么?,c#,C#,关于这个问题的一点背景知识,我知道最常用的是使用赋值/连接表来解决这个问题 我正在开发一个C#MVC web应用程序,我有从a到f的课程。类a是类b到g的基类,它们都有多个共同的属性。我的问题在于b类和c类具有多对多关系,以及b/d、e/c和f/d 我已经浏览了继承模型,但我还没有真正找到子类具有多对多关系或如何最好地处理它们的示例 看起来我的选择是: A) 表/A类作为我的基础,带有作业b/c、b/d、e/c和f/d的表 或 B) 把基地扔出窗外,有表B、c、d、e、f,还有分配B/c、B/d

关于这个问题的一点背景知识,我知道最常用的是使用赋值/连接表来解决这个问题

我正在开发一个C#MVC web应用程序,我有从a到f的课程。类a是类b到g的基类,它们都有多个共同的属性。我的问题在于b类和c类具有多对多关系,以及b/d、e/c和f/d

我已经浏览了继承模型,但我还没有真正找到子类具有多对多关系或如何最好地处理它们的示例

看起来我的选择是: A) 表/A类作为我的基础,带有作业b/c、b/d、e/c和f/d的表 或 B) 把基地扔出窗外,有表B、c、d、e、f,还有分配B/c、B/d、e/c和f/d的表

我的问题是我是否错过了一个选择,在这方面是否有一个更好的方向

更新:我正在寻找数据库和应用程序结构中的最佳方法。底层表结构是否需要遵循选项A或B。如果这个问题看起来很愚蠢,我很抱歉,但我一直在思考这个问题。

为什么继承。。。相反,你应该在这里使用构图。我的意思是你的b类应该由c类实例作为类成员组成。差不多

public class B
{
  public IEnumerable<C> ListOfC { get; set; }
} 
公共B类
{
公共IEnumerable列表{get;set;}
} 

我将从设计数据库表开始,并确保确定数据库的主键。主键是类之间的链接。记住,当您有主键时,您只能有一个带有该键的项。因此,对于学生数据库,您将有一个带有学生ID(主键)和名称的表。然后,您将有一个课程列表,其中包含课程ID(一门课程可能会被多次教授)和名称。然后你在一个房间和一段时间内教授课程(每个课程都有一个ID)。最后,你有一个带有学生ID和类的表。所以选项B。我想是这样的,但我希望,因为我考虑的所有表都共享属性名称、规范代码、开始和结束日期,所以有一个比重复这5次更好的选项,你可以创建一个带有ID(主键)的属性表,属性名称、规格代码、开始和结束日期。然后可以在其他表中引用该ID。