假设我在一个网球应用程序中有3张桌子(去掉不相关的信息):
竞赛
ID(PK)
比赛
ID(PK)
COMPID(FK)
法庭分配
复杂度(pk),(fk)
法院编号(pk)
matchID(fk),(唯一)
描述上述内容:
一场比赛由两个人在球场上互相打网球组成。
一场比赛由0到多场比赛组成。
法庭指派代表比赛期间的法庭(在一次比赛中,0或1场比赛可以指派给法庭),而且一场比赛只能在一个法庭号码上进行,并且只能在一次比赛中进行。(所以这两个字段一起构成了法院分配表的主键)
因此,courtAssignment的matchID字段将始终唯一或为空。
但是,当a从我的数据库生成ef模型时。我的courtAssignment导航属性与匹配项的多重性为*。这应该是0..1。
我使用的是Visual Studio 2010 Beta 2(带有.NET 4 Beta 2和EF4 Beta 2)。
我一直在使用beta 1,可以简单地将*更改为0..1。但是,现在已经改为beta 2,因为它有一个上线许可证(移植升级我的解决方案工作正常,但重新从头开始编写我的解决方案,我无法手动将*更改为0..1,而不会收到错误:
错误113:多重性在关系“courtAssignments”中的角色“courtAssignments”中无效。由于依赖角色属性不是键属性,因此依赖角色的多重性上限必须为*。
问题
如何将多重性更改为0..1?我知道这是可行的,因为我以前的解决方案继续以这种方式工作。我似乎再也无法在设计器中进行更改,完全迷失在EDMX文件中。
注意:我意识到将matchID更改为主键会产生正确的多重性,但我需要将主键更改为[compid,courtnumber]的组合,因为我需要能够切换哪一个匹配是在运行中的哪个法院。很明显,它不能改变主键。
感谢任何能提供帮助的人!