考虑以下模型:
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”实例?换句话说,“人”可以既是“学生”又是“教师”?
如果是,那么用于表示此场景的最佳继承策略是什么?
答案 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)
是的,这是可能的......一个人可能是学生或教师。
“继承策略”究竟是什么意思?
你这样做的方式还可以。