我有3个实体,我想将它们用作EF作为POCO:
TimeTable是Period和LessonPlanner类的基类。
如何在EF 5.0或更高版本中使用/映射这3个类?
我想创建2个sql表:Period和LessonPlanner。
EF仅支持每个层次结构的表或每种类型的表。
要么我得到一个包含所有属性的表作为字段,要么我得到3个单独的表。
我只想要2张桌子,无论我采取什么方法,我都不在乎:数据库/型号/代码优先......
public class TimeTable
{
public int Id { get; set; }
public int LessonNumber { get; set; }
public string SchoolclassNumberForSunday { get; set; }
public string SchoolclassNumberForMonday { get; set; }
public string SchoolclassNumberForTuesday { get; set; }
public string SchoolclassNumberForWednesday { get; set; }
public string SchoolclassNumberForThursday { get; set; }
public string SchoolclassNumberForFriday { get; set; }
public string SchoolclassNumberForSaturday { get; set; }
}
public class Period : TimeTable
{
public enum WeekType
{
A,
AB,
}
}
public class LessonPlanner : TimeTable
{
public DateTime LessonDate { get; set; }
}
答案 0 :(得分:1)
首先在Entity Framework 5中使用代码,在DbContext派生类中,覆盖OnModelCreating
并添加以下代码。我没有尝试过你的类型,但是我使用了一个变体为三个深层次结构创建了两个类。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Period>()
.Map<Period>(p => p.MapInheritedProperties())
.ToTable("Period");
modelBuilder.Entity<LessonPlanner>()
.Map<LessonPlanner>(lp => lp.MapInheritedProperties())
.ToTable("LessonPlanner");
}