将子节点添加到现有父实体框架

时间:2015-02-07 10:04:59

标签: entity-framework inheritance entity-framework-6 table-per-type

我们说我有两个班级

[Table("User")]
public class User 
{
    public string Name { get; set; }

    public string Surname { get; set; }
}

[Table("Manager ")]
public class Manager : User
{
    public int Title {get;set;}
}

我使用实体框架6.1.2和每种类型的表格来保存实体。

现在我想添加一个孩子(即经理),但这个孩子有一个父母(即用户)。

所以我应该怎么做 我如何只插入子节点。

1 个答案:

答案 0 :(得分:1)

你正在混合一些OO原则。 经理是用户。 这意味着如果您向系统添加管理器,您实际上也在添加用户。如果用户不是经理,您可以将用户添加到系统。 添加管理器将更新用户表和管理器表。添加不是管理员的用户只会在用户表中添加一个条目。 所以总结一下。普通用户和经理用户都将出现在users表中。但对于也是经理的用户,经理表中也会有记录。属于管理器的信息分布在数据库中的2个表中。在EF中,因为您使用了继承,所以只使用了管理器实例,但由于它是从用户派生的,因此您也可以访问用户属性。关系概念和OO概念不相同,EF为您做这些不同概念之间的映射,因此称为对象关系映射。