2016-09-20 9 views
0

Ich habe List<object> Liste der Enums, die das Ergebnis einiger Muster übereinstimmenden Code ich schrieb.Liste der Enums in der Datenbank speichern

Mein Problem ist, dass ich diese Liste von Enums in der Datenbank speichern möchte, damit dieses Muster in der Zukunft wieder angewendet werden kann, aber ich bin ein wenig verwirrt, wie dies zu tun ist.

Die ENUM-Liste besteht aus verschiedenen Aufzählungen, zum Beispiel:

EnumType1.SomeVaue 
EnumType2.SomeValue 

Ich weiß nicht, wie viele auch Aufzählungen oder in welcher Reihenfolge sie sein wird. Ich habe Mühe, über eine gute Möglichkeit nachzudenken, dies in der Datenbank zu serialisieren, so dass die List<object> Liste später mit den gleichen Enums neu erstellt werden kann, um in meinen Code zurückzukehren.

Ich frage mich, ob die Darstellung von Mustersegmenten mit Enums eine schlechte Idee war, und ich sollte zurückgehen und den ganzen Code umgestalten?

Kann ich die Enumeration zu einer Zeichenkette mit dem Aufzählungstyp drehen und sie dann zurück konvertieren?

+0

müssen Sie wissen, wie 'enums' auf sparen die db oder was? – Sampath

+0

Ich möchte die Liste der Enums in ihrer genauen Reihenfolge speichern. Ich kann die Enumeration als Eigenschaft festlegen, aber ich möchte die Liste der Enums zusammen speichern, damit ich sie später neu erstellen kann. – Guerrilla

Antwort

0

Sie könnten die verschiedenen Enum int Werte in die Datenbank speichern. zum Beispiel

public enum Animal {Dog = 0, Cat = 1, Bird = 2} 
public class Person 
{ 
    public Animal Pet {get; private set;} 

    public Person() 
    { 
     Pet = Animal.Dog; 
    } 

    public void Insert() 
    { 
     using(var con = DbFactory.CreateConnection(Database)) 
     { 
      con.Query("stored_procedure_here", new { Pet = this.Pet}, CommandType.StoredProcedure); 
     } 
    } 


} 

In Ihrer Datenbank haben Sie eine Tabelle mit Pet als Integer. Der ganzzahlige Wert von Hund, der ist, wird gespeichert. dann, wenn Sie den Wert der Enumeration() die Enum automatisch ziehen wissen, dass es Hund ist .. Ich hoffe, dass Sinn gemacht ... neu in diesem ganzen antwortet auf Stackoverflow-Dinge :))

EDIT : Ok, wenn Sie mehrere Typen von Enums in der Liste haben, können Sie eine Tabelle haben, die int Wert enthält und auch eine andere Spalte, die Typ/Name der enum hat. wenn Sie es herausziehen könnten Sie irgendeine Art von Logik haben, die Art in die entsprechende ENUM organisiert .. ich denke ..

//Get the Name/Type and the int from the database for example Dog, 0 
string enumName = "Dog"; 
int enumValue = 0 
Type enumType = Type.GetType(enumName); 
if (enumType == null) 
{ 
    throw new ArgumentException("Specified enum type could not be  found", "enumName"); 
} 

object value = Enum.Parse(enumType, enumValue); 

}

+0

Ich habe mehrere verschiedene Aufzählungstypen in der Liste, so dass es nicht funktionieren würde. – Guerrilla

+0

Danke für die Hilfe. Ich muss in Enum-Typ aus String erstellen und bin mir nicht sicher, wie Sie den Prozess umkehren. – Guerrilla

+0

@Guerrilla meine Antwort bearbeitet habe ich hoffe, dies kann helfen .. möglicherweise mit der Enum "Name" und Wert in einer Tabelle, dann können Sie herausfinden, die Art der enum und int und erhalten Sie die enum Wert, den Sie auf diese Weise wünschen ??? – DaveHutchy

Verwandte Themen