2010-09-06 6 views
9

Angenommen habe ich die folgenden 2 SQL-Tabellen:Wie Zuordnung Lookup-Tabelle zu enum?

Foo

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

FooType

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

nun mit im Entity Framework 4.0 mit einem benutzerdefinierten Datenkontext und POCO Implementierung .

Wie kann ich dies auf den Designer und meine POCOs?

Muss ich eine POCO-Eigenschaft (vom Typ Byte ich nehme an) namens "FooTypeId" erstellen, dann enthülle ich eine andere Eigenschaft meines Enum-Typs?

Ie.

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 
} 

Im Moment, ich habe auf meinem Designer nicht einmal den FooType Tisch, wie ich versuche ich kann gemustert „Express“ dies als eine Aufzählung von dem tatsächlichen FooTypeId auf der Foo-Eigenschaft. Oder soll ich eine "Navigationseigenschaft" auf dem Mapper erstellen und dann das in meinem POCO definieren?

Ich habe Threads aus einigen Jahren gelesen (EF1) sagen "Enums werden nicht in EF unterstützt", ist dies immer noch der Fall mit EF4? Wenn es ist, was mache ich richtig?

Ich bin hier irgendwie verloren, einige Anleitung würde sehr geschätzt werden!

+0

Ich habe T4 dazu verwendet. http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx –

Antwort

7

Derzeit unterstützt EF4 Enums nicht nativ.

ich eine große Abhilfe durch AlexJ gesehen habe, das funktioniert ziemlich gut (es ist ziemlich schwer Code though), http://blogs.msdn.com/b/alexj/archive/2009/06/05/tip-23-how-to-fake-enums-in-ef-4.aspx

Ich habe auch gehört, dass die gebürtige ENUM-Unterstützung wird in der nächsten Version von EF4 kommt, aber wer weiß genau wann das veröffentlicht wird.

+0

Wow, das ist ziemlich Code-schwer, aber dennoch eine Lösung. Vielen Dank. – RPM1984

+0

Es wird in .NET 4.5, siehe [data.uservoice] (http://data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions/suggestions/1015335-support-for -Enum) – abatishchev