数据库设计在MVC和实体框架中有限数量的选择?

时间:2011-03-01 11:24:58

标签: asp.net database entity-framework database-design asp.net-mvc-3

我真的不知道在这个问题的标题中放什么,但是这就是:

如果我希望能够拥有一个表顾问,这是用户及其个人信息,我希望这个用户能够从0-开始选择他们在许多程序(软件)中的熟练程度5(零没有任何经验),我该如何做到最好?

我的意思是我可以拥有一个与Program表有一对多关系的Consultant表,然后让所有有限的程序可以通过XML文件或其他东西加载,并且对于每个顾问员都可以使用所有程序及其熟练程度。但这似乎非常错误和低效。

在我看来,我应该有一个包含所有(有限数量)程序的表,然后通过Ids之间的某种关联。但我无法理解如何做到这一点。我想多对多......但首先,这是正确的吗?其次,我如何在实体框架模型中执行此操作?我通常首先创建我的数据库代码,即创建EF模型,然后从模型生成数据库。我是否可以在一个联结表中添加Level字段,因为基本上是一个顾问有一个Level,或者实际上是一个程序列表,每个都有一个Level。

我对数据库的经验太少,无法解决这个问题。我们将非常感谢您一步一步的解释!

1 个答案:

答案 0 :(得分:1)

创建三个表:

  • 顾问
  • 程序
  • ConsultantProficiency

ConsultantProficiency将包含以下列:

  • ConsultantId - FK to Consultant
  • ProgramId - FK to Program
  • 等级

将Mark ConsultantId和ProgramId标记为表格的PK。

将这些表添加到实体模型 - 它将创建具有所有关系和导航属性的三个实体。您也可以在EDMX中执行此操作,让EF为您生成DB。

这里的要点是你不能隐藏联结表,因为你想将Level设置为附加属性。只有当您不需要向联结表添加任何其他数据时,才能直接表达多对多(隐藏联结表)。