EF代码优先的继承 - 每种类型的表(TPT)

时间:2014-10-22 16:24:58

标签: .net entity-framework ef-code-first entity-framework-ctp5 table-per-type

我尝试使用Table per Type方法使用EF Code First进行继承。我的实际结构是这样的:

public partial class Person
{
    public int ID {get; set;}
    public string Name { get; set; }
}

public partial class Employee : Person
{
    public int ID { get; set; }
    public string Document{ get; set; }
}

使用这种结构,例如,我可以这样做:

var obj = new Employee();
string a = obj.Name;   <--- The property Name is from Person model

然而,不可能以相反的方式做这种关系(就像在LINQ中所做的那样):

var obj2 = new Person();
string b = obj2.Person.Document;    <--- It cannot resolve 'Person' symbol

有没有办法从Employee对象访问模型Person?

提前致谢。

1 个答案:

答案 0 :(得分:0)

正如所有人在评论中提到的,Person不是员工,也无法访问员工财产。您可以使用“as”运算符,如果员工是员工,则将人员转换为员工对象,如果员工不是员工,则为空。

希望以下内容能帮助您找到正确的方向:

var obj2 = new Person();
string b;

var employee = obj2 as Employee;
if (employee != null)
{
    b = obj2.Person.Document;
}

在这种情况下,Person永远不会是员工,因为它是在

之前创建的