【发布时间】:2010-10-05 09:17:34
【问题描述】:
我正在尝试解决在我的项目中实施 EF 时遇到的情况。
我已经免除了每个类型的表格方法,在我的情况下,ActionUpdate 派生自 ActionHistory 并且工作正常。
我想要实现的是从 ActionHistory 派生 ActionUpdate,并在 ActionUpdate 处拥有一个导航属性,该属性将保存 ActionUpdateDetail 实体的集合。
问题从继承开始:当我根据 MSDN 示例从 ActionUpdate 中删除 ActionHistoryId,然后从 ActionHistory 派生并进行重新映射时,ActionUpdateId 会自动变为非 PK 属性。
这种行为使我无法映射到 ActionUpdateDetail 实体,因为我的新派生类不再包含 PK :( 我应该将 ActionUpdate.ActionUpdateId 映射到 ActionUpdateDetail.ActionUpdateid
我的假设:
- 要么根本不可能实现这样的事情,
- 我只是个想以错误方式做事的蠢屁,
- 我注定要失败 :)
问题的原因
我认为与你分享我痛苦的原因很重要:)
我凭直觉推测 ActionUpdateDetail 必须映射到 ActionUpdate 的 Id,这是错误的。
相反,它必须映射到 ActionUpdate 实体的 ActionHistoryId 属性,因为 ActionUpdate 派生自 ActionHistory。
这个小改动导致 ActionUpdate 表丢失了它的 Id 列,即它只包含 ActionHistoryId 列。该单列表存在的原因是因为 ActionHistory 是一个抽象实体,我需要一些东西,即 ActionUpdate 来保存一组 ActionUpdateDetail 实体。
【问题讨论】:
标签: entity-framework inheritance associations