实体框架端点多重性

时间:2009-11-20 18:32:47

标签: entity-framework database-design

假设我在网球应用程序中有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]的组合,因为我需要能够切换哪个匹配在哪个场上苍蝇显然,它无法更改主键。

感谢能提供帮助的任何人!

1 个答案:

答案 0 :(得分:3)

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

Unique Keys not recognized by Entity Framework

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