【问题标题】:Correct association mapping in Entity Framework实体框架中的正确关联映射
【发布时间】:2011-01-11 16:11:12
【问题描述】:

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

这会导致以下构建错误,或者我所做的两个更改各有一个:

错误 3002:映射问题 从行开始的片段 1761:潜在的运行时违规 表 CustomerServices 的键 (CustomerServices.Id):列 (CustomerServices.Id) 映射到 实体集 CompiledDatabaseCustomerService的 特性 (CompiledDatabaseCustomerService.CustomerService.Id) 在概念方面,但他们没有 形成 EntitySet 的关键属性 (CompiledDatabaseCustomerService.CompiledDatabase.Id, CompiledDatabaseCustomerService.CustomerService.Id)

我不完全确定为什么会发生这种情况,所以不出所料,我没有太多运气来修复它。我试过摆弄映射细节并添加引用约束无济于事。有人指出我正确的方向吗?

干杯, 马特

【问题讨论】:

    标签: .net entity-framework


    【解决方案1】:

    当您收到此错误时,首先要检查的事情之一是查看并确保您的数据库架构中的键列与您的实体定义相匹配。我在进行更新时遇到了类似的问题。

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

    【讨论】:

    • 感谢收看。我实际上并没有触及键映射,所以这似乎不太可能是问题的根源:我所做的只是改变了现有关联的一端。当您说直接查看映射时,您的意思是检查 Designer.cs 文件吗?
    • @Matt - 通过右键单击实体图中的表并选择“表映射”来查看表映射。查看列映射并确保它们被正确映射。 (顺便说一句,我不肯定我的建议会帮助你(我希望他们会),但这是我遇到过这样的问题的两个方面。)
    【解决方案2】:

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

    【讨论】:

    • 啊。哈哈......我什至没有想过这个,但是,是的。无论您采用哪种方式(先更新数据库或先更新模型),都必须更新另一个。说得通! (对于将来可能遇到此问题的任何人,这是一个很好的提醒。)
    猜你喜欢
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多