2012-08-11 160 views
8

我試圖創建EF5 RC與此類似數據方面:多個對象集相同類型的

class WordContext : DbContext { 
    public DbSet<Word> PossibleWords { get; set; } 
    public DbSet<Word> UsedWords { get; set; } 
} 

當我試圖更新數據庫,我收到一個異常說:多個對象集每類型不受支持。對象設置'PossibleWords'和'UsedWords'都可以包含'TestProject.Word'類型的實例。

經過一些Google搜索之後,看起來像這樣構建數據上下文在EF中實際上並不可行。

我的問題是:什麼是良好的代碼優先設計來存儲這樣的數據?

我猜是小事一樁可能是這樣的:

class WordContext : DbContext { 
    public DbSet<Words> Words { get; set; } 
} 

class Words { 
    public int ID { get; set; } 
    public IList<string> PossibleWords { get; set; } 
    public IList<string> UsedWords { get; set; } 
} 

但這只是感覺可怕

編輯:當然,另一種微不足道的是使用2種不同的字類型,如

類PossibleWord {...} 類BannedWord {...}

其實,現在我把它寫下來,它甚至不看壞,嗯...

EDIT2:

以防萬一別人運行到這個太,我會告訴它到底是怎麼解決:

class Word { 
    [Key] 
    public string String { get; set; } 
} 
class PossibleWord : Word { } 
class UsedWord : Word { } 

class WordContext : DbContext { 
    public DbSet<PossibleWord> PossibleWords { get; set; } 
    public DbSet<UsedWord> UsedWords { get; set; } 
} 
+2

感謝您提及您最終使用的內容。 – 2014-02-15 14:22:15

回答

7

想必您試圖在原始代碼中表示2個不同的表。我會考慮兩個類,UsedWord和PossibleWord,並且只是讓它們都實現一個通用接口,例如:IWord?或者更簡單,只需要在Word中有一個bool「IsUsed」字段,以及一個表/類型。

+0

哈哈耶,忍者。在我寫下來之前,我總覺得不太合適。直到8分鐘之後,我纔會接受你的答案。非常感謝 :] – user974608 2012-08-11 11:01:24

相關問題