2017-04-04 3 views
2

Ich habe diesen Datenbank-Aufruf in meinem Controller:ASP Net MVC, wie man diesen async macht?

var addresses = db.Addresses.Where(a=>a.EmployeeId == id).ToList(); 

Es funktioniert gut, wie es ist, aber ich bin eine harte Zeit, um es async zu machen. Wenn ich es asynchron mache, kann ich alle Datensätze in der Tabelle oder einen einzelnen Datensatz auswählen. Ich kann jedoch nicht scheinen, mehrere Datensätze mit passender EmployeeId zu erhalten.

+1

„Wenn ich es async machen“, können Sie Bitte fügen Sie den Code auch hinzu? Es kann sein, dass ein Mitarbeiter mehrere Adressen hat! – Anil

+0

Ja, einige Mitarbeiter haben mehrere Adressen. Also, wie schreibt man einen asynchronen Code, um eine Liste von Adressen mit passender EmployeeId zu erhalten? – ASvistun

+0

Als Ihr Code scheint mir richtig und es sollte wie erwartet funktionieren. Außerdem können Sie Adressen- und Employee-Entitätsdefinitionen, Beispieltabellendaten und Ihren Async-Call-Code hinzufügen. – Anil

Antwort

2

Ich fand die Lösung für meine eigene Frage.

var addresses = db.Addresses.Where(a=>a.EmployeeId == id).ToList(); 

Um die obige Aufruf asynchron machen ich es geändert:

var addresses = await db.Addresses.Where(a=>a.EmployeeId == id).ToListAsync(); 

Das gesamte Verfahren wie folgt aus: Die

public async Task<ActionResult> FindAddress(int? id) 
    { 
     if(id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     var addresses = await db.Addresses.Where(a=>a.EmployeeId == id).ToListAsync(); 

     if (addresses == null) 
      return HttpNotFound(); 

     return View(addresses); 

    }