我想使用现有基本对象的外键在我的数据库中保存派生对象。这有可能吗?我有这样的东西: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; }
}
显然,您希望在此时更改类名,因为它们不再真正有意义。
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报
0/150
提交
取消