2017-11-02 2 views
0

Ich versuche herauszufinden, ob es eine Möglichkeit gibt, mehrere Zeilen gleichzeitig mit Entity zu aktualisieren.Mehrere Zeilen gleichzeitig mit Entity Framework aktualisieren

Vorerst ich Linq2Sql SubmitChanges bin mit der Update Zeile für Zeile durchführen wird:

c.PROPERTYONE = valueOne; 
c.PROPERTYTWO = valueTwo; 
... 
dataContext.SubmitChanges(); 

In meinem Fall valueOne und valueTwo wird höchstwahrscheinlich für jede Iteration ändern.

Ich würde gerne wissen, ob es möglich ist, zum Beispiel bis zu 1000 Zeilen zu speichern und sie auf einmal zu aktualisieren.

Ich weiß, wie man es mit Einfügungen macht (indem ich die DbContext-Instanz erhalte, die entsprechende Tabelle, die Add-Funktion und dann SaveChanges), aber ich habe Mühe, das Äquivalent für Updates zu finden.

Vielen Dank im Voraus!

+0

bitte –

+0

Was Bulk-Update Ihnen mehr Code setzen? Siehe https://stackoverflow.com/a/44194925/2946329 –

Antwort

2

Sie sollten das folgende Konzept verwenden, um mehrere Zeilen zu aktualisieren.

using (var db = new MyDbContext()) 
{ 
var myData=db.YourTableObject.Where(x=>x.Someproperty=="Something").ToList(); 
myData.ForEach(m => m.YouPropertye= "Set Your Value",m.SomeOther="Set Other"); 
db.SaveChanges() 

} 
1

In Entity Framework können Sie die Transaktion verwenden. So können Sie alle Änderungen in einer Transaktion gruppieren. Wenn Sie eine Transaktion festschreiben, gehen alle Änderungen zusammen/können zusammen rückgängig gemacht werden. stahl ich das Beispiel von hier https://msdn.microsoft.com/en-us/library/dn456843(v=vs.113).aspx

using (var dbContextTransaction = context.Database.BeginTransaction()) 
       { 
        try 
        { 
         context.Database.ExecuteSqlCommand( 
          @"UPDATE Blogs SET Rating = 5" + 
           " WHERE Name LIKE '%Entity Framework%'" 
          ); 

         var query = context.Posts.Where(p => p.Blog.Rating >= 5); 
         foreach (var post in query) 
         { 
          post.Title += "[Cool Blog]"; 
         } 

         context.SaveChanges(); 

         dbContextTransaction.Commit(); 
        } 
        catch (Exception) 
        { 
         dbContextTransaction.Rollback(); 
        } 
       } 
Verwandte Themen