2013-02-11 57 views
2

我有3個實體,我想將它們用於EF爲POCO`s:我需要表的每一個分層的混合或鍵入實體框架

時間表是時代和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

沒人?回到舊的ADO.NET 2.0,沒有任何限制? – Elisabeth 2013-02-12 18:27:38

+0

您的意思是Period沒有額外的屬性,還是應該有WeekType屬性? – 2013-03-11 19:06:27

回答

1

先在實體框架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"); 
    } 
+0

太遲了,你遲到了比賽。我發現我的設計不正確,所以我改變了關係。因此我不再需要這個了;-)。我希望這個週末有機會嘗試一下,然後回到這裏。 – Elisabeth 2013-03-16 09:44:14

+0

那麼......有什麼好處? – 2013-03-30 18:54:06

相關問題