2017-11-02 1 views
0

Ich habe die Anforderung, die letzten 1000 Datensätze aus einer Tabelle basierend auf dem Erstellungsdatum zu löschen und dann neue 1000 Datensätze aus einer anderen Tabelle einzufügen.Wie 1000 Datensätze basierend auf erstelltem Datum aufsteigend mit Entity Framework löschen?

Was wäre der beste Weg, es zu tun?

public void mymethod() 
{ 
    // TestBasketRequests (delete thousands records from here) 
    // Call Delete(); 
} 

public void Delete(IList<TestBasketRequest> TestBasketRequests) 
{ 
    using (var dbContext = new myContext()) 
    { 
     dbContext.Entry(TestBasketRequests).State = EntityState.Deleted; 
     dbContext.SaveChanges(); 
    } 
} 
+3

Wenn Sie Luxus von Drittanbieter-Bibliothek verwenden, würde ich empfehlen, [EntityFramework.Plus] (https://github.com/zzzprojects/EntityFramework-Plus) zu verwenden, da es Batch-Löschmethode im asynchronen Modus bietet. –

+0

Möchten Sie der zweiten Tabelle Daten mit demselben Tabellenschema hinzufügen? –

Antwort

2

Die

RemoveRange() 

Methode wird verwendet, um mehrere Elemente aus der Datenbank zu löschen. Und in dem Verfahren müssen Sie die letzten 1000 Einzelteile zu erhalten verwenden

TakeLast() 

mit nur noch wenige Einheiten zurückkehren basierend auf der Reihenfolge, wie sie in der Datenbank hinzugefügt wurden.

In Ihrem mymethod() u haben so etwas wie dieses I-Test den Ball hielt

var lastN = MyDbContext.MyDbSet 
        .OrderByDescending(g => g.CreateDate) 
        .Take(1000); 

MyDbContext.MyDbSet.RemoveRange(lastN); 

schreiben diese code.you Änderungen nach Ihren Wünschen machen.

Verwandte Themen