2016-05-12 7 views
2

Ich bin auf der Suche nach einer Möglichkeit, Code mit Entity Framework zu schreiben, um 1000 Datensätze zu aktualisieren, die einem Kriterium entsprechen.Datensätze mit Entity Framework aktualisieren, ohne zuerst zu laden

In SQL würde es so aussehen

UPDATE [Items] 
SET [IsInSeason] = 1 
WHERE [Name] like '%summer%' 

Es macht keinen Sinn für mich alle Elemente in den Speicher für dieses Update nur zu laden in.

Und ich möchte schreiben regelmäßig SQL-Anweisungen vermeiden (wenn möglich)

Antwort

5

Out of the Box hat Entity Framework keine solche Fähigkeit. Sie müssen die Entitäten entweder vor dem Aktualisieren laden oder auf Raw-SQL zurückgreifen (als Ad-hoc-Anweisung oder durch Aufrufen einer gespeicherten Prozedur).

Es gibt jedoch ein paar EF-Erweiterungspakete, die behaupten, dieses Batch-Update- und Batch-Delete-Szenario zu unterstützen. Ich habe keine persönliche Erfahrung mit einem von ihnen hatte, sondern geben ihnen einen Blick:

1

mit Entity Framework arbeiten ich glaube, dass Sie die Daten in den Speicher zu laden haben. Wie sonst wirst du deine Aussagen geben? Sie könnten eine gespeicherte Prozedur schreiben, die Sie von Ihrem Datenlayer aufrufen, wenn Sie die Daten wirklich nicht in den Arbeitsspeicher laden und SQL Server nur behandeln möchten (wenn Sie mit SQL Server arbeiten)

0

Sie können erhalten alle Einzelteile und sie in Schleife aktualisieren wie diese

(from x in dataBase.Items 
     where x.Name.Contains("summer") 
     select x).ToList().ForEach(xx => x.IsInSeason=1); 

wenn Sie Entity Framework verwenden, sollten Sie alle Elemente als Objekte erhalten, führen Sie die nessecar Änderungen, und sie retten.

Verwandte Themen