2012-08-11 21 views
8

Próbowałem stworzyć kontekst danych w EF5 RC podobny do tego:Wiele zestawów obiektów tego samego typu

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

Kiedy próbowałem zaktualizować bazę danych, otrzymałem wyjątek mówiąc: wielu zestawów obiekt za typ nie są obsługiwane. Zestawy obiektów "PossibleWords" i "UsedWords" mogą zawierać instancje typu "TestProject.Word".

Wygląda na to, że po utworzeniu google'a taka struktura danych nie jest możliwa w EF.

Moje pytanie brzmi: Jaki jest dobry pierwszy projekt do przechowywania takich danych?

Chyba trywialne jeden może być coś takiego:

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; } 
} 

Ale to po prostu czuje straszny.

Edit: Oczywiście, inna trywialne jeden byłoby użyć 2 różne typy słów, jak

klasy PossibleWord {...} klasy BannedWord {...}

Właściwie teraz, że napisałem ją w dół nawet nie wyglądają tak źle, hmm ...

Edit2:

wszelki wypadek ktoś wpada na to zbyt, pokażę jak to zostało rozwiązane w końcu:

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

Dziękuję za wzmiankę o tym, z czego skorzystałeś. –

Odpowiedz

7

Prawdopodobnie próbujesz reprezentować 2 różne tabele w oryginalnym kodzie. Rozważałbym dwie klasy, UsedWord i PossibleWord, i po prostu obydwoje zaimplementowali wspólny interfejs, powiedzmy: IWord? Lub prostsze, po prostu mieć bool "IsUsed" pole na Word i jeden tabela/typ.

+0

Haha tak, ninja. Jakoś nie wyglądał mi dobrze, dopóki go nie zapisałem. Nie pozwolę mi zaakceptować twojej odpowiedzi do 8 kolejnych minut. Wielkie dzięki :] – user974608

Powiązane problemy