首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法让两个子对象使用继承来引用相同的基对象?

有没有办法让两个子对象使用继承来引用相同的基对象?
EN

Stack Overflow用户
提问于 2019-02-01 01:27:23
回答 1查看 92关注 0票数 0

我想用现有基对象的外键在数据库中保存一个派生对象。这有可能吗?我有这样的东西:

代码语言:javascript
复制
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。我知道这是继承的原则,但我能实现我所描述的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-01 02:34:10

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

长话短说,如果你想“分享”基本项目,它根本不应该是一个基本项目,而是通过组合添加的:

代码语言:javascript
复制
public class ChildA
{
    public Base Base { get; set; }
}

public class ChildB
{
    public Base Base { get; set; }
}

显然,您需要在此时更改类名,因为它们已经不再有意义了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54466123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档