L'inclusion d'utilisateur d'identité avec Entity Framework ne fonctionne pas

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

Question

Je ne parviens pas à inclure mon utilisateur d'identité dans les résultats de la requête. D'autres entités sont incluses très bien, peu importe le nombre de niveaux.

Voici le modèle que j'utilise.

Building * --- 1 City
     *            *
     |          /
     |         /
     1        1
ApplicationUser

Et le contexte:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public DbSet<City> Cities { get; set; }
    public DbSet<Building> Buildings { get; set; }
}

Building et City ont les propriétés suivantes:

public Guid ApplicationUserId { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }

La requête que j'utilise pour récupérer des données:

var building = context.Buildings
    .Include(c => c.ApplicationUser)
    .Include(c => c.City)
    .Include(c => c.City.ApplicationUser)
    .First();

Dans le résultat, la ville est parfaitement remplie, mais ApplicationUser ne l’est pas.

Cela pourrait-il être un problème de nommage? J'ai déjà essayé UserId / User et AspNetUserId / AspNetUser tant que noms de propriété sans succès.

J'utilise Migrations pour créer la base de données. AspNetUsers est le nom de la table créé pour les utilisateurs.

J'utilise entity framework 7 beta 7, je ne sais pas si cela s'applique également aux autres versions.

Ce sont les fichiers générés par EF Migrations.

ApplicationDbContextModelSnapshot.cs

20150929181902_Init.cs

20150929181902_Init.Designer.cs

(J'ai remarqué que j'avais oublié d'inclure la relation Bâtiment> Ville lors de la génération de fichiers à télécharger, mais cela ne devrait pas avoir d'importance pour l'exemple.)

Réponse acceptée

Je l'ai enfin compris.

ApplicationUser hérite d' IdentityUser qui hérite d' IdentityUser<string> . Le type générique est utilisé comme clé primaire, donc une string !

J'ai changé mes propriétés de clé étrangère Guid en string s et maintenant tout fonctionne.




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