2 votes

.net core - La propriété virtuelle du modèle n'est pas chargée

Dans mon projet .net core 2, j'ai un modèle d'utilisateur et de fichier et ils ont une relation. Dans le modèle et dans la base de données ;

modèle d'utilisateur :

[DefaultValue(null)]
public int? AvatarId { get; set; }
[ForeignKey("AvatarId")]
public virtual File Avatar { get; set; }

modèle de fichier :

[InverseProperty("Avatar")]
public ICollection<User> Users { get; set; }

J'obtiens mon utilisateur avec cette requête

var user = this._db.User.Include(u => u.Avatar).FirstOrDefault(o => o.Id == id);

dans le contexte :

modelBuilder.Entity<User>()
            .HasOne<File>(u => u.Avatar)
            .WithMany(f => f.Users)
            .HasForeignKey(u => u.AvatarId);

Si l'utilisateur a un avatar ou n'a pas d'avatar, la propriété Avatar retourne null.

5voto

TanvirArjel Points 4560

Le chargement paresseux pour la propriété de navigation virtuelle n'est pas pris en charge dans Entity Framework Core 2.0.

Il a été ajouté dans Entity Framework 2.1. Vous devez donc mettre votre application à niveau vers ASP.NET Core 2.1.

Ensuite, installez le Microsoft.EntityFrameworkCore.Proxies et configurez-le comme suit dans le fichier ConfigureServices() de la méthode Startup classe.

services.AddDbContext<YourDbContext>(
    b => b.UseLazyLoadingProxies()
          .UseSqlServer(YourConnectionString));

Voici plus de détails sur le chargement paresseux dans Entity Framework Core 2.1 :

  1. Nouveautés d'Entity Framework 2.1
  2. Documentation sur le chargement paresseux

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X