实体框架继承 - 同一基本实例的多个子实例

时间:2013-03-13 13:09:24

标签: c# entity-framework

考虑以下模型:

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

public partial class Teacher : Person
{
    public string ClassName { get; set; }
}

public partial class Student : Person
{
    public int NumberOfClasses { get; set; }
}

使用该模型和实体框架,是否可以从同一个基础“Person”实例派生“Student”实例和“Teacher”实例?换句话说,“人”可以既是“学生”又是“教师”?

如果是,那么用于表示此场景的最佳继承策略是什么?

2 个答案:

答案 0 :(得分:0)

“abstract”关键字是关键。不确定为什么你使用“部分”。您需要先选择一个策略 - 此链接将解释所有策略。 http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-inheritance-with-the-entity-framework-in-an-asp-net-mvc-application

public abstract class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Teacher : Person
{
    public string ClassName { get; set; }
}

public class Student : Person
{
    public int NumberOfClasses { get; set; }
}

* 编辑 - 示例用法*

public void GetSomeDetailAboutAPerson(Person person)
{
    return person.SomeSharedDetailFromBaseClass;
}

public void Something()
{
    Teacher teacher = myService.GetTeacherById(3);
    var someDetailOrOther = this.GetSomeDetailAboutAPerson(teacher);
}

答案 1 :(得分:-1)

是的,这是可能的......一个人可能是学生或教师。

“继承策略”究竟是什么意思?

你这样做的方式还可以。

检查一下: http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-inheritance-with-the-entity-framework-in-an-asp-net-mvc-application