2

3 つのエンティティがあり、それらを EF に POCO として使用したいと考えています。

TimeTable は、Period クラスと LessonPlanner クラスの基本クラスです。

これらの 3 つのクラスを EF 5.0 以降で使用/マップするにはどうすればよいですか?

Period と LessonPlanner という 2 つの SQL テーブルを作成したいと考えています。

EF は、階層ごとのテーブルまたは型ごとのテーブルのみをサポートします。

すべてのプロパティをフィールドとして含む 1 つのテーブルを取得するか、3 つの個別のテーブルを取得します。

データベース/モデル/コードを最初に...

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、次のコードをオーバーライドして追加します。あなたのタイプで試したことはありませんが、これのバリアントを使用して、3 つの深い階層の 2 つのクラスを作成しました。

    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 に答える