.net 实体框架中正确的关联映射

.net 实体框架中正确的关联映射,.net,entity-framework,.net,Entity Framework,尝试将实体框架中的两个关系从多对一改为多对多。因此,我尝试了一件显而易见的事情:单击图表上的每个关联,相应地更改关联的相应结尾,然后将导航属性的名称更改为复数以反映更改 这将导致以下生成错误,或者我所做的两个更改各有一个生成错误: 错误3002:映射中存在问题 从第行开始的片段 1761:潜在的运行时违反 表CustomerServices的键 (CustomerServices.Id):列 (CustomerServices.Id)映射到 实体集 CompiledDatabaseCustome

尝试将实体框架中的两个关系从多对一改为多对多。因此,我尝试了一件显而易见的事情:单击图表上的每个关联,相应地更改关联的相应结尾,然后将导航属性的名称更改为复数以反映更改

这将导致以下生成错误,或者我所做的两个更改各有一个生成错误:

错误3002:映射中存在问题 从第行开始的片段 1761:潜在的运行时违反 表CustomerServices的键 (CustomerServices.Id):列 (CustomerServices.Id)映射到 实体集 CompiledDatabaseCustomerService的 性质 (CompiledDatabaseCustomerService.CustomerService.Id) 在概念方面,但事实并非如此 形成EntitySet的键属性 (CompiledDatabaseCustomerService.CompiledDatabase.Id, CompiledDatabaseCustomerService.CustomerService.Id)

我不完全清楚为什么会发生这种情况,所以毫不奇怪我没有太多的运气来修复它。我尝试过处理映射细节和添加引用约束,但都无济于事。有人给我指出正确的方向吗

干杯,
Matt

出现此错误时,首先要检查的一件事是查看并确保数据库模式中的键列与实体定义匹配。我在进行更新时遇到了类似的问题


如果这似乎不是您的问题,那么还要检查您是否没有翻转与映射相关的列-确保所有内容都映射到正确的方向。(我建议直接查看您的映射,看看是否发生了这种情况。)

好的,事实证明,所需的只是从模型更新数据库。白痴我-我以为只会重新生成SQL脚本来创建数据库。

谢谢您的关注。实际上,我还没有触及键映射,因此这似乎是一个不太可能的问题来源:我所做的只是更改现有关联的一端。当您说要直接查看映射时,是否要检查Designer.cs文件?@Matt-通过右键单击实体图中的表并选择“表映射”来查看表映射。查看列映射下的内容,确保它们已正确映射。(顺便说一句,我不认为我的建议会对你有帮助(我希望他们会),但这是我看到的两个问题。)。哈哈…我甚至没想过这个,但是,是的。无论您走哪条路(要么先更新数据库,要么先更新模型),都必须更新另一条路。有道理!(对于将来可能遇到这个问题的人来说,这是一个很好的提醒。)