Wir verwenden EF CF seit einiger Zeit in unserer Lösung. Große Fans! Bis jetzt haben wir einen Hack verwendet, um Enums zu unterstützen (indem wir ein zusätzliches Feld im Modell erstellen, das Enum-Durring-Mapping ignorieren und das zusätzliche Feld der Spalte in der db zuordnen, die wir verwendet hätten). Traditionell haben wir unsere Enums als Strings (Varchars) in der DB gespeichert (macht es schön und lesbar). Jetzt mit Enum-Unterstützung in EF 5 (Beta 2) sieht es so aus, als ob es nur das Zuordnen von Enums zu int-Spalten in der DB unterstützt .... Können wir EF 5 dazu bringen, unsere Enums als String-Repräsentation zu speichern.Kann ich Enums als Zeichenfolgen in EF 5 speichern?
Wo "Typ" ist ein Enum vom Typ Document
public enum DocumentType
{
POInvoice,
NonPOInvoice,
Any
}
Ich habe versucht, es zu kartieren mit:
public class WorkflowMap : EntityTypeConfiguration<Model.Workflow.Workflow>
{
public WorkflowMap()
{
ToTable("Workflow", "Workflow");
...
Property(wf => wf.Type).HasColumnType("varchar");
}
}
Ich dachte, die magische Kugel sein würde, aber ..
Das wirft nur:
Sch ema angegeben ist nicht gültig. Fehler: (571,12): Fehler 2019: Member Die angegebene Zuordnung ist nicht gültig. Der Typ 'Dodson.Data.DataAccess.EFRepositories.DocumentType [Nullable = False, Default =]' des Mitglieds 'Typ' in Art 'Dodson.Data.DataAccess.EFRepositories.Workflow' ist nicht kompatibel mit ‚SqlServer .varchar [Nullable = Falsch, DefaultValue =, MaxLength = 8000, Unicode = False, FixedLength = False] ' des Mitglieds' Type 'im Typ' CodeFirstDatabaseSchema.Workflow '.
Ihre Gedanken?
Diese in der Tat funktioniert, ist aber ein bisschen hacky. –
Es ist. Vielleicht wird EF 7 etwas haben. – Bryan
Schöne Lösung.Ein kleiner Kommentar, sobald Sie eine Erweiterungsmethode verwenden, könnten Sie einfach schreiben - value.ParseEnum(), anstelle von EnumExtensions.ParseEnum (Wert). –
IFink