2

我有 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; }
}
4

1 回答 1

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");
    }
于 2013-03-11T22:53:01.270 回答