2014-12-16 12 views
10
public enum Currency 
    { 
    EUR = 1, 
    USD = 2, 
    GBP = 3 
    } 

Załóżmy, że mam wyliczenie, jak pokazano powyżej. Gdybym używał tego przy użyciu Entity Framework (najpierw kod), wartości int będą przechowywane w bazie danych. Nie zapisano tabeli odnośników ani nazw łańcuchów wartości wyliczeniowych, co utrudnia bezpośrednie odczytanie danych bazy danych.Przechowywanie nazw wyliczeń w bazie danych za pomocą Entity Framework

Czy istnieje sposób, aby uzyskać EF, aby utworzyć tabelę odnośników do wyliczenia?

+0

Spróbuj pytanie http://stackoverflow.com/questions/11167665/ef5-code-first- wylicza tabele-i-lookup –

Odpowiedz

2

Tak, jest. Będziesz musiał dodać tabelę do swojej konfiguracji, a następnie upewnij się, że chcesz zaimportować wartości, które chcesz, do tabeli za pomocą refleksji. Następnie utwórz relację FK między tabelą odnośników i tabelami, w których używasz swoich wyliczeń, i powinieneś ustawić. Jest to dobry przykład kodujący w this post. To może pomóc w rozpoczęciu pracy.

+2

Dzięki. Wygląda to dość bolesnie: p Mam nadzieję, że uda mi się gdzieś przesunąć flagę w konfiguracji :) –

+0

Tak, wiem. Kręciłem się również, ale nie mogę wymyślić innego sposobu, aby to zrobić, jeśli absolutnie musisz zobaczyć ciągi w bazie danych. – IronMan84

14

Możesz spróbować coś takiego co jest łatwiejsze ...

public enum Currency 
{ 
    EUR = 1, 
    USD = 2, 
    GBP = 3 
} 

public class YourClassName 
{ 
    [Column("Currency")] 
    public string CurrencyString 
    { 
     get { return Currency.ToString(); } 
     private set { Currency = EnumExtensions.ParseEnum<Currency>(value); } 
    } 

    [NotMapped] 
    public Currency Currency; 
} 

public class EnumExtensions 
{ 
    public static T ParseEnum<T>(string value) 
    { 
     return (T)Enum.Parse(typeof(T), value, true); 
    } 
} 

źródło: example by Bryan Hogan

+1

Podoba mi się, ale wtedy będę :) – Bryan

Powiązane problemy