我正在尝试解决在使用我的项目实施EF时遇到的情况。
我已经解除了每个类型的表格方法,在我的例子中,ActionUpdate派生自ActionHistory并且工作正常。
我想要实现的是从ActionHistory派生ActionUpdate,并在ActionUpdate中拥有一个导航属性,该属性将包含一系列ActionUpdateDetail实体。
问题始于继承:当我从ActionUpdate中删除ActionHistoryId时,根据MSDN示例,然后从ActionHistory派生并进行重新映射,ActionUpdateId会自动变为非PK属性。
这种行为阻止我映射到ActionUpdateDetail实体,因为我的新派生类不再包含PK :( 我应该将 ActionUpdate.ActionUpdateId 映射到 ActionUpdateDetail.ActionUpdateid
我的假设:
我认为重要的是,我与你分享我的痛苦的原因:)
我直观地假设ActionUpdateDetail必须映射到ActionUpdate的Id,这是错误的。
相反,它必须映射到ActionUpdate实体的ActionHistoryId属性,因为ActionUpdate派生自ActionHistory。
这一小改动导致ActionUpdate表丢失了它的Id列,即它只包含ActionHistoryId列。存在该单列表的原因是ActionHistory是一个抽象实体,我需要一些东西,即ActionUpdate来保存一组ActionUpdateDetail实体。
答案 0 :(得分:0)
可以在EF中使用每个类型的表继承,并使用您提供的示例,我将编写一些驱动程序。您只需按照以下步骤操作:
重要说明:要创建每个类型的表继承,基类和派生类必须建立1到0..1的关系。所以你的模型不会在继承上支持这种类型。为什么要从ActionHistory实体派生ActionUpdate实体?