2010-09-06 12 views
9

Załóżmy, że mam następujące 2 tabele SQL:Jak wyświetlić tabelę odnośników do wyliczenia?

Foo

Column  DataType 
--------------------------- 
Title   NVARCHAR(20) 
Body   NVARCHAR(MAX) 
FooTypeId  TINYINT 

FooType

Column  DataType 
-------------------------- 
FooTypeId  TINYINT 
Name   NVARCHAR(10) 

Teraz, im przy użyciu Entity Framework 4.0 z kontekstu niestandardowych danych i realizacji POCO .

Jak to zmapować na projektanta i moje POCO?

Czy muszę utworzyć właściwość POCO (typu bajt i zakładam) o nazwie "FooTypeId", a następnie wyświetlić ANOTHER właściwość mojego typu wyliczenia?

Tzn.

public class Foo 
{ 
    public byte FooTypeId { get; set; } // for ORM - do i need this?? 
    public FooType FooType // for most querying operations 
    { 
     get 
     { 
      return (FooType)this.FooTypeId; 
     } 
     set 
     { 
      this.FooTypeId = (int)value; 
     } 
    } 
} 

public enum FooType 
{ 
    Blah = 1, 
    Foo = 2, 
    Bar = 3 
} 

W tej chwili nawet nie mają FooType tabeli na moim projektanta, jak pomyślałem może spróbować „express” to jako wyliczenie od rzeczywistego FooTypeId na nieruchomości Foo. Czy powinienem stworzyć "Navigational Property" w programie odwzorowującym, a następnie zdefiniować to w moim POCO?

Czytałem wątki z kilku lat wstecz (EF1), mówiąc "Emisje nie są obsługiwane w EF", czy tak jest w przypadku EF4? Jeśli tak, to co robię dobrze?

Jestem trochę zagubiony, pewne wskazówki będą mile widziane!

+0

Użyłem T4, aby to zrobić. http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx –

Odpowiedz

7

Obecnie EF4 nie obsługuje wyliczeń natywnie.

Widziałem wielki obejście przez AlexJ że działa całkiem dobrze (to kod dość ciężki chociaż), http://blogs.msdn.com/b/alexj/archive/2009/06/05/tip-23-how-to-fake-enums-in-ef-4.aspx

Słyszałem również, że natywne wsparcie enum zbliża się w następnej wersji EF4, ale kto dokładnie wie, kiedy to nastąpi.

+0

Wow, to całkiem niezły kod, ale mimo to rozwiązanie. Dzięki. – RPM1984

+0

Będzie to w .NET 4.5, zobacz [data.uservoice] (http://data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions/suggestions/1015335-support-for -enums) – abatishchev

Powiązane problemy