2016-08-04 38 views
0

Normalerweise gehe ich so etwas in Seed() Methode.Wie AddOrUpdate von einer Liste ohne foreach-Anweisung?

List<Thing> stuff = ...; 
foreach(Thing thing in stuff) 
    model.Things.AddOrUpdate(thing); 

Jetzt habe ich festgestellt, dass sie in den Kommentaren so etwas vorschlagen.

context.People.AddOrUpdate(
    p => p.FullName, 
    new Person { FullName = "Andrew Peters" }, 
    new Person { FullName = "Brice Lambson" }, 
    new Person { FullName = "Rowan Miller" } 
); 

Und ich bin gespannt, ob es nur explizit deklariert arbeitet auf einzelne Fälle oder wenn ich es bis zu meiner Sachen Liste kann der Haken?

Ich habe folgendes versucht, was natürlich nicht funktioniert hat und dann habe ich festgestellt, dass ich vielleicht am falschen Baum belle. Bevor ich übermäßig bellen lasse, frage ich demütig, ob das überhaupt möglich ist.

context.Things.AddOrUpdate(_ => _, stuff); 

Antwort

1

Beide extension methods in Ihrem Beispiel verwendet werden, haben eine params Array als letzten Parameter. Das heißt, wenn Sie eines oder mehrere Elemente bereitstellen, wird ein Array erstellt, das diese Elemente enthält.

Alternativ können Sie auch nur ein Array zur Verfügung stellen, so dass dies funktionieren würde:

model.Things.AddOrUpdate(stuff.ToArray()); 

Die documentation für params und enthalten Beispiele nützlich sein könnten.