2017-04-04 1 views
2

J'ai cet appel de base de données dans mon contrôleur:ASP Net MVC comment faire cela asynchrone?

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

Il fonctionne très bien comme ça, mais je vais avoir du mal à faire async. Quand je le fais asynchrone, je suis capable de sélectionner tous les enregistrements dans le tableau ou un seul enregistrement, très bien. Cependant, je n'arrive pas à obtenir plusieurs enregistrements avec EmployeeId correspondant.

+1

« Quand je fais async », pouvez-vous s'il vous plaît ajouter le code aussi? C'est peut-être parce qu'un employé a plusieurs adresses! – Anil

+0

Oui, certains employés ont plusieurs adresses. Alors, comment écrivez-vous un code asynchrone pour récupérer une liste d'adresses avec EmployeeId correspondant? – ASvistun

+0

Comme votre code me semble correct et il devrait fonctionner comme prévu. En outre, vous pouvez ajouter des adresses et une définition d'entité Employee, des exemples de données de tables et votre code d'appel asynchrone. – Anil

Répondre

2

J'ai trouvé la solution à ma propre question.

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

Pour asynchrone d'appel ci-dessus je l'ai changé:

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

Toute la méthode ressemblera à ce qui suit:

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); 

    }