EF7 Identity not loading propriétés étendues de l'utilisateur

asp.net-core asp.net-identity entity-framework-core

Question

J'ai une classe IdentityUser étendue qui contient une référence à une autre entité de ma base de données, mais chaque fois que j'essaie d'obtenir l'utilisateur avec UserManager, l'entité référencée est toujours vide:

Mon implémentation de la classe utilisateur

public class Usuario : IdentityUser
{
    public int ClienteID { get; set; }
    public virtual Cliente Cliente { get; set; }
}

Un contrôleur qui utilise la propriété référencée sur l'utilisateur

[Authorize]
[HttpGet]
public async Task<Direccion> GET()
{
    var usuario = await UserManager.FindByNameAsync(Context.User.Identity.Name);
    // Cliente will always be null
    return usuario.Cliente.Direccion;
}

J'ai également essayé de supprimer le mot clé virtuel de la référence, de sorte qu'il soit chargé paresseux, mais je ne suis pas sûr que cela soit déjà implémenté sur EF7.

Des idées sur la façon de réaliser ceci?

Réponse populaire

J'avais également ce problème et je l'ai résolu avec l'aide de la documentation de base d'EF . Vous devez utiliser la méthode Include pour que les données associées soient renseignées. Dans mon cas:

Classe d'entité:

public class ServiceEntity
{
    public int ServiceId { get; set; }
    public int ServiceTypeId { get; set; }

    public virtual ServiceTypeEntity ServiceType { get; set; } 

}

Accéder à mon objet DbContext:

public ServiceEntity GetById(int id)
{
    var service = this.DbClient.Services.Include(s => s.ServiceType).Where(c => c.ServiceId == id).FirstOrDefault();

    return service;
}

Je devais aussi rendre la propriété "virtuelle". D'après ce que je comprends, EF Core doit pouvoir remplacer les propriétés de l'objet associé afin de renseigner les valeurs.

En outre, à compter de cette date, EF Core ne prend pas encore en charge le chargement différé, mais uniquement le chargement optimisé et le chargement explicite.

J'espère que cela t'aides!




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi