Wie kann ich Eigenschaften als wörtliche Liste initialisieren?
UPDATE
Wie ganz zu Recht von @Gert, können Sie nicht Aufzählungen direkt in einer EF Datenbank (Oh, drats) verwenden.
Ein enum
wird jedoch durch einen int
dargestellt, so dass der Wert weiterhin in der Datenbank gespeichert werden kann, indem eine Klasse verwendet wird.
Sie müssen eine Klasse erstellen, um die Werte in der Datenbank zu speichern, und dann können Sie aus der Klasse MyModel
darauf verweisen.
So:
public enum TypesOfFeature // The enum of features
{
One = 1,
Two = 2,
Three = 3
... // etc.
}
public class Feature // The class to map to a table in your DB
{
public int Id { get; set; }
public TypesOfFeature Type { get; set; }
}
hinzufügen DbSet<Feature>
an Ihrem Code-first-Modell, so dass Sie diese von Ihrem DB zugreifen können. Etwas wie public DbSet<Feature> Features { get; set; }
wird tun.
Es könnte eine gute Idee sein, die Werte manuell in die Datenbank aufzunehmen, damit Sie wissen, dass ihre IDs mit dem Wert int
des Enums übereinstimmen. * Sie könnte dies mit AddOrUpdate
im Seed()
Methode tun - dann, wenn Sie mehr hinzufügen müssen, können Sie sie unter *
Sie müssten fügen Sie die Feature
s Sie wollen, von der DB, um dann zurückzukehren Weisen Sie sie Ihrer MyModel.Features
Eigenschaft zu.
Wie so:
Feature featureOne = YourDbContext.Features.Single(x => x.Type == TypesOfFeature.One);
Feature featureTwo = YourDbContext.Features.Single(x => x.Type == TypesOfFeature.Two);
Feature featureThree = YourDbContext.Features.Single(x => x.Type == TypesOfFeature.Three);
Dann wird in dem Code, wo Sie Ihre MyModel
Objekt initialisiert wird, können Sie dann die List<Feature>
initialisieren, vorbei in den erforderlichen Feature
Objekte gezogen Sie oben aus:
var model = new MyModel
{
Id = 1,
Name = "Test Name",
Points = 2,
Features = new List<Feature>
{
featureOne,
featureTwo,
featureThree
}
}
Offensichtlich weiß ich nicht, welche Werte Sie in Ihrem Feature
enum
haben, aber oben ist nur ein Beispiel.
Hoffe, das hilft!:)
Die Antworten zu sehen (bisher) niemand scheint zu bemerken, dass Sie eine 'Liste' in der Datenbank nicht speichern können. Denken Sie darüber nach, welchen Datentyp das Zieldatenbankfeld haben soll. 'Feature' muss eine Klasse sein, die einer eigenen Tabelle zugeordnet ist. –
Mögliches Duplikat: http://Stackoverflow.com/q/32072732/861716 –
Danke @GertArnold - komplette Amateurstunde für mich, vergiss 'enum' mit Entity Framework. Ich habe meine Antwort unten aktualisiert, die nun die Frage von OP lösen sollte: –