0

我是新的EF4 CTP5,我想創建一個模型如下,每個表都是相同的字段(ID,文本,值),我不想把它們放在一個表中,可以我使用基類?但我不知道它是如何是我的域模型?使用 「POCO」 模式EF4 CTP5 CodeFirst造型問題

public class BaseSearchType 
{ 
    public int Id {get;set;} 
    public int text{get;set;} 
    public int value {get;set;} 
} 

public class BooleanSearchTypeTable :BaseSearchType 
{ 

} 

public class JobStatusSearchTypeTable:BaseSearchType 
{ 

} 

public class PersonStatusSearchTypeTable: BaseSearchType 
{ 

} 

BooleanSearchTypeTable 
----------------- 
id text value 
1 All 0 
2 Yes 1 
3 No 2 

JobStatusSearchTypeTable 
----------------- 
id text value 
1 Open 0 
2 Closed 1 
3 Approved 2 
4 Rejected 3 
5 Waiting 4 

PersonStatusSearchTypeTable 
id text value 
1 Work 0 
2 Seek 1 
3 Vacation 2 
+1

你應該升級到的版本。已經過去了一個月。 EF 4.1 – 2011-06-05 18:47:40

回答

2

他們不會被映射到一個表直到你指示EF這樣做。簡單地定義你的類,如:

public abstract class BaseSearchType 
{ 
    public int Id { get; set; } 
    public string text { get; set; } 
    public int value { get; set; } 
} 

public class BooleanSearchTypeTable : BaseSearchType 
{ } 

public class JobStatusSearchTypeTable : BaseSearchType 
{ } 

public class PersonStatusSearchTypeTable : BaseSearchType 
{ } 

而且你喜歡的上下文:

public class Context : DbContext 
{ 
    public DbSet<JobStatusSearchTypeTable> JobStatuses { get; set; } 
    public DbSet<BooleanSearchTypeTable> BooleanStatuses { get; set; } 
    public DbSet<PersonStatusSearchTypeTable> PersonStatuses { get; set; } 
} 
+0

你不能只是dbset基類,例如public DbSet BaseSearchType {get;組; } – WooHoo 2011-06-07 11:09:59

+0

一旦你這樣做了,你有實體繼承和所有實體映射到OP不想要的單個表。您可以將其修改爲其他類型的繼承,但這仍是您只有在需要時才應執行的操作。 – 2011-06-07 11:17:16