Verwenden von ADO.net Entity Framework 4 mit Enumerations? Wie mache ich es?

8

Frage 1: Ich spiele mit EF4 herum und habe eine Modellklasse wie:

%Vor%

Hier sind Gender und EducationLevel Enums wie:

%Vor%

Wie bekomme ich die Candidate Class und Gender und EducationLevel, die mit EF4 arbeiten, wenn:

  • Ich modelliere erste Entwicklung
  • Ich mache db erste Entwicklung

Bearbeiten: Die Frage zum Objektkontext wurde in eine andere Frage verschoben hier .

    
Perpetualcoder 14.01.2010, 16:20
quelle

1 Antwort

16

Anscheinend wird int <-> enum nicht unterstützt in der ersten Veröffentlichung von EF 4. Ich stimme denen zu, die sagen, dass es scheiße ist.

Ich verwende eine Eigenschaft, die das Casting für mich übernimmt

%Vor%

Es sieht nicht so schlecht aus, wenn man Dinge "richtig" nennt (was bedeutet, dass es nicht dumm aussieht). Zum Beispiel habe ich eine ReasonCode-Enumeration, die als Grund in der Datenbank gespeichert ist, also habe ich Reason- und ReasonCode-Versionen der Eigenschaft. Funktioniert gut genug für den Moment.

Erstens, ich fange gerade an, EF4 zu benutzen, also bin ich nicht vertraut damit, wie es funktioniert. Ich gehe davon aus, dass es ähnlich wie L2S ist, aber mit besserer Entity-Unterstützung. Nehmen Sie das mit einem Körnchen Salz.

Um klar zu sein, diese Eigenschaft dient der Bequemlichkeit und ich bin mir 90% sicher, dass EF schlecht reagieren wird, wenn Sie versuchen, die Datenbank mit dieser Eigenschaft abzufragen. EF kennt Ihre Eigenschaft nicht und kann sie nicht zum Erstellen von SQL verwenden. Also das:

%Vor%

wird sich wahrscheinlich nicht wie erwartet dort verhalten:

%Vor%

führt wahrscheinlich dazu, dass die gesamte Foos-Tabelle in den Speicher geladen und dann geparst wird. Diese Eigenschaft dient zur Vereinfachung und sollte nur verwendet werden, nachdem die Datenbank gefunden wurde! Beispiel:

%Vor%

Wenn du nicht verstehst, dass der Unterschied hier ist, dann spielst du mit Feuer. Sie müssen lernen, wie EF / L2S Ihren Code interpretiert und in SQL-Anweisungen konvertiert.

    
Will 14.01.2010, 16:31
quelle