我的数据库表看起来像这样:
Task
可以映射到Module
,或者根本不映射(0 ... 1)。我首先使用Entity Framework数据库,当我从数据库生成模型时,Task实体将Modules作为集合(0或更多)来实现。所以我打开了我的EDMX并将Task上的“Modules”导航属性更改为0 ... 1。
现在,当我尝试编译时,我收到此错误:
错误3003:从第1241行开始映射片段时出现问题:给定关联结束成员任务的基数,它应该映射到表TaskModule的键列。修复映射或更改此结束的多重性。
我不明白我需要做些什么来解决这个问题。我查看了关联细节,看不出问题。我知道我可能错过了一些愚蠢的东西,但我完全陷入困境。协会财产:
Visual Studio 2010 SP1,实体框架4.3.1.0,SQL Server 2008 R2。
答案 0 :(得分:5)
执行此操作的一种方法是重新定义TaskModule表的主键。它不是主键(TaskId,ModuleName),而是(TaskId)。然后从数据库执行更新模型,并手动更改任何未从该更新中获取的关联。
答案 1 :(得分:1)
根据您提供的说明,您的数据库架构不正确:
TaskModule表涉及多对多关系,而不是多对一或零。
在edmx中,不会显示多对多关系表,但它们仍然存在于数据库中。
所以你应该修复你的数据库,或者对EF提出的关系感到满意!