实体框架端点多重性

database-design entity-framework

假设我在网球应用程序中有3个表(剥离删除不相关的信息):

比赛

Id(PK)

火柴

Id(PK)

CompId(FK)

CourtAssignments

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]的组合,因为我需要能够在哪个场上切换哪个匹配。显然,它无法更改主键。

谢谢谁能提供帮助!

一般承认的答案

斯科特,这不是与你完全相同的情况,但它可能会有所帮助:

实体框架无法识别的唯一密钥

我认为它可能是相关的 - 也许你已经在概念模型中暴露了FK cols?如果是这种情况,似乎你不能做1到0..1。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因