Identità EF7 che non carica le proprietà estese dell'utente

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

Domanda

Ho una estesa classe IdentityUser che contiene un riferimento a un'altra entità sul mio DB, ma ogni volta che provo a ottenere l'Utente con UserManager, l'entità referenziata viene sempre vuota:

La mia implementazione della classe User

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

Un controller che utilizza la proprietà di riferimento sull'utente

[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;
}

Ho anche provato a rimuovere la parola chiave virtuale dal riferimento, in modo che sia pigro caricato, ma non sono sicuro che sia già implementato su EF7.

Qualche idea su come raggiungere questo obiettivo?

Risposta popolare

Ho avuto anche questo problema e l'ho risolto con l'aiuto della documentazione EF Core . È necessario utilizzare il metodo Include per ottenere il popolamento dei dati correlati. Nel mio caso:

Classe di entità:

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

    public virtual ServiceTypeEntity ServiceType { get; set; } 

}

Accedere al mio oggetto DbContext:

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

    return service;
}

Ho dovuto rendere la proprietà "virtuale" pure. La mia comprensione è che EF Core deve essere in grado di sovrascrivere le proprietà dell'oggetto correlato per popolare i valori.

Inoltre, a partire da questa data di post, EF Core non supporta ancora il caricamento lento, solo il caricamento Eager e il caricamento esplicito.

Spero che questo ti aiuti!



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché