为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法让两个子对象使用继承引用同一个基对象?

有没有办法让两个子对象使用继承引用同一个基对象?

C#
holdtom 2022-08-20 16:12:57
我想使用现有基本对象的外键在我的数据库中保存派生对象。这有可能吗?我有这样的东西:public class Base{    public int BaseId { get; set; }}[Table("ChildA")]public class ChildA : Base{    /*...*/}[Table("ChildB")]public class ChildB : Base{    /*...*/}我有一个现有的ChildA,我想创建与ChildA相同的BaseId的ChildB。问题是EntityFramework不会让我这样做。如果我尝试保存传递现有 BaseId 的 ChildB,则会创建一个新的 Base。我知道这是继承的原则,但我能实现我所描述的吗?
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

继承意味着“is-a”关系,而不是“has-a”关系,这正是 EF 在数据库级别对其进行建模的方式。派生类型将创建一个使用其基类型创建的一对一外键。因此,不能让多个派生项使用同一基项,因为这会违反参照完整性。


长短两用,如果要“共享”基本项,则根本不应该是基本项,而是通过组合添加:


public class ChildA

{

    public Base Base { get; set; }

}


public class ChildB

{

    public Base Base { get; set; }

}

显然,您希望在此时更改类名,因为它们不再真正有意义。


查看完整回答
反对 回复 2022-08-20
  • 1 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信