假设我在网球应用程序中有3个表(删除了删除不相关的信息):
Id(PK)
Id(PK)
CompId(FK)
CompId(PK),(FK)
CourtNumber(PK)
MatchId(FK),(唯一)
描述以上内容: 比赛由两个人在球场上互相打网球组成。 比赛由0到多场比赛组成。
法庭判决代表法院在比赛期间(在单一比赛期间,0或1场比赛可以分配给法院)另外,单场比赛只能在一个法院号码上进行,并且只存在于一场比赛中。 (因此这两个字段一起构成了CourtAssignment表的主键)
因此,CourtAssignment的MatchId字段将始终是唯一的或无效。
但是,从我的数据库生成EF模型时。我的CourtAssignment Navigation Property与我的匹配的多样性是*。这应该是0..1。
我正在使用Visual Studio 2010 beta 2(使用.Net 4 beta 2和EF 4 beta 2)。
我一直在使用beta 1,只能将*更改为0..1。但是,现在已经更改为beta 2,因为它具有上线许可证(移植升级我的解决方案工作正常,但从头开始重新编写我的解决方案,我无法在没有收到错误的情况下将更改*更改为0..1:
错误113:多重性在关系'CourtAssignments_MatchId_FK_Matches_Id'中的角色'CourtAssignments'中无效。由于Dependent Role属性不是关键属性,因此Dependent Role的多重性的上限必须为*。
如何将多重性更改为0..1?我知道这是可行的,因为我的旧解决方案继续以这种方式工作。我似乎无法在设计器中进行更改,并在edmx文件中完全丢失。
注意:我意识到将MatchId更改为主键会产生正确的多样性,但我需要我的主键是[CompId,CourtNumber]的组合,因为我需要能够切换哪个匹配在哪个场上苍蝇显然,它无法更改主键。
感谢能提供帮助的任何人!
答案 0 :(得分:3)
Unique Keys not recognized by Entity Framework
我认为这可能是相关的 - 也许你在概念模型中暴露了FK cols?如果是这种情况,似乎你不能做1到0 ......。