我真的不知道在这个问题的标题中放什么,但是这就是:
如果我希望能够拥有一个表顾问,这是用户及其个人信息,我希望这个用户能够从0-开始选择他们在许多程序(软件)中的熟练程度5(零没有任何经验),我该如何做到最好?
我的意思是我可以拥有一个与Program表有一对多关系的Consultant表,然后让所有有限的程序可以通过XML文件或其他东西加载,并且对于每个顾问员都可以使用所有程序及其熟练程度。但这似乎非常错误和低效。
在我看来,我应该有一个包含所有(有限数量)程序的表,然后通过Ids之间的某种关联。但我无法理解如何做到这一点。我想多对多......但首先,这是正确的吗?其次,我如何在实体框架模型中执行此操作?我通常首先创建我的数据库代码,即创建EF模型,然后从模型生成数据库。我是否可以在一个联结表中添加Level字段,因为基本上是一个顾问有一个Level,或者实际上是一个程序列表,每个都有一个Level。
我对数据库的经验太少,无法解决这个问题。我们将非常感谢您一步一步的解释!
答案 0 :(得分:1)
创建三个表:
ConsultantProficiency将包含以下列:
将Mark ConsultantId和ProgramId标记为表格的PK。
将这些表添加到实体模型 - 它将创建具有所有关系和导航属性的三个实体。您也可以在EDMX中执行此操作,让EF为您生成DB。
这里的要点是你不能隐藏联结表,因为你想将Level设置为附加属性。只有当您不需要向联结表添加任何其他数据时,才能直接表达多对多(隐藏联结表)。