6

我有如下所示的数据库表:

架构图

ATask可以映射到 a Module,或者根本不映射 (0...1)。我首先使用实体​​框架数据库,当我从数据库生成模型时,任务实体与模块一起作为一个集合(0个或更多)出现。所以我打开了我的 EDMX 并将 Task 上的“模块”导航属性更改为 0...1。

EDMX

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

错误 3003:从第 1241 行开始映射片段时出现问题:鉴于 Association End Member Task 的基数,它应该映射到表 TaskModule 的关键列。要么修复映射,要么改变这一端的多样性。

我不明白我需要做什么来解决这个问题。我查看了关联详细信息,但看不到问题所在。我知道我可能错过了一些愚蠢的东西,但我完全被困住了。关联属性:

任务模块关联

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

4

2 回答 2

6

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

于 2012-04-11T15:43:14.493 回答
1

那么您的数据库架构与您提供的描述不正确:

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

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

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

于 2012-04-11T15:42:09.457 回答