0 ... 1协会的实体框架基数问题

时间:2012-04-11 15:31:54

标签: entity-framework model-associations entity-framework-4.3 cardinality

我的数据库表看起来像这样:

Schema Diagram

Task可以映射到Module,或者根本不映射(0 ... 1)。我首先使用Entity Framework数据库,当我从数据库生成模型时,Task实体将Modules作为集合(0或更多)来实现。所以我打开了我的EDMX并将Task上的“Modules”导航属性更改为0 ... 1。

EDMX

现在,当我尝试编译时,我收到此错误:

  

错误3003:从第1241行开始映射片段时出现问题:给定关联结束成员任务的基数,它应该映射到表TaskModule的键列。修复映射或更改此结束的多重性。

我不明白我需要做些什么来解决这个问题。我查看了关联细节,看不出问题。我知道我可能错过了一些愚蠢的东西,但我完全陷入困境。协会财产:

TaskModule Association

Visual Studio 2010 SP1,实体框架4.3.1.0,SQL Server 2008 R2。

2 个答案:

答案 0 :(得分:5)

执行此操作的一种方法是重新定义TaskModule表的主键。它不是主键(TaskId,ModuleName),而是(TaskId)。然后从数据库执行更新模型,并手动更改任何未从该更新中获取的关联。

答案 1 :(得分:1)

根据您提供的说明,您的数据库架构不正确:

TaskModule表涉及多对多关系,而不是多对一或零。

在edmx中,不会显示多对多关系表,但它们仍然存在于数据库中。

所以你应该修复你的数据库,或者对EF提出的关系感到满意!