1
votes

Pourquoi la méthode Entity Framework Core 2.2 FirstOrDefaultAsync est-elle introuvable?

Je crée une application Web avec les éléments suivants -

  1. ASP.NET Core
  2. Entity Framework Core
  3. Base de données SQlite
  4. SPA angulaire (ng 7)

J'ai fait un modèle nommé User avec quelques propriétés comme ci-dessous -

<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.2" />

Ce que j'ai choisi est la première approche du modèle et la migration des données pour créer une table en conséquence

public async Task<User> Login(string userName, string password)
{
  var user = await _context.Users.
}

Mais chaque fois que j'essaie de trouver un utilisateur avec ce qui suit -

public DbSet<User> Users { get; set; }

Il ne me montre pas la méthode FirstOrDefaultAsync. Je ne comprends pas pourquoi il me montre comme ça?

Voici les versions que j'utilise pour le projet API -

public class User
{
    public int Id { get; set; }
    public string UserName { get; set; }
    public byte[] PasswordHash { get; set; }
    public byte[] PasswordSalt { get; set; }
}


4 commentaires

Obtenez-vous la méthode FirstOrDefault ? Si vous ajoutez var user = _context.Students.FirstOrDefaultAsync() et en using Microsoft.EntityFrameworkCore; , construisez votre projet, recevrez-vous une erreur?


@Tao Zhou, il ne me montre pas FirstOrDefault. mais j'ai trouvé Add (), AddRange (), Find (), FindAsync () etc.


Existe-t-il une démo pour reproduire votre problème? Il doit exister avec using Microsoft.EntityFrameworkCore; .


Oui, ça marche, merci pour votre aide.


3 Réponses :


7
votes

Vous avez oublié d'ajouter la référence au noyau du framework d'entité 'using Microsoft.EntityFrameworkCore;'

Conseil: si vous appuyez sur CTRL + . il devrait afficher le correctif immédiat.


5 commentaires

Je ne pense pas.


Avez-vous var user = wait _context.Users.FirstOrDefaultAsync () et frappé cette combinaison de touches et rien ne s'est affiché?


Oui, je fais cela mais je ne trouve pas la méthode FirstOrDefaultAsync ().


Peut-être que Visual studio a bugué et n'a pas pu suivre vos packages, essayez de nettoyer votre solution, fermez Visual Studio et rouvrez-le et essayez de créer à nouveau et appliquez plus tard la mention de la pointe dans la réponse


J'ai nettoyé Visual Studio Code et rouvert le projet. Mais cela ne montre toujours pas cette méthode .Mais cela m'a montré d'autres méthodes mais pas FirstOrDefault () et FirstOrDefaultAsync ()



1
votes

Il n'existe pas de versions asynchrones des opérateurs LINQ tels que Where (...), OrderBy (...), etc. car ces méthodes ne font que construire l'arborescence d'expression LINQ et ne provoquent pas l'exécution de la requête dans la base de données.

Voir dans le document Microsoft


0 commentaires

0
votes

Au cas où des noobs tels que je trébucherais là-dessus, j'avais simplement besoin d'ajouter:

using System.Linq;


1 commentaires

Bienvenue dans stackoverflow. Ce serait mieux adapté comme commentaire et non comme question. Veuillez consulter: meta.stackexchange.com/questions/214173 / ...