Je crée un modèle d'auto-référencement dans un modèle MVC5 qui est une réflexion après coup. Le modèle est comme ci-dessous:Auto-référencement MVC5 EF6 création d'un nouvel ID dans la base de données
public class GalleryCat
{
[Key]
public int GalleryCatId { get; set; }
public string CatName {get; set;}
public virtual GalleryCat GalleryCatParent { get; set; }
public int GalleryCatParentId {get; set; }
public virtual ICollection<GalleryCat> Children { get; set; }
public virtual ICollection<Gallery> Galleries { get; set; }
protected void OnModelCreating (DbModelBuilder modelBuilder)
{
modelBuilder.Entity<GalleryCat>()
.HasOptional(c => c.GalleryCatParent)
.WithMany(c => c.Children)
.HasForeignKey(p => p.GalleryCatParentId);
}
}
Cela crée un nouveau champ Id dans la base de données MYSQL comme GalleryCatParent_GalleryCatId au lieu de GalleryCatParentId? Quelqu'un peut-il guider ce que je fais à tort?
Merci quand j'implémentez cette reçois cette erreur .Migrations.ApplicationUserLogin:: EntityType « ApplicationUserLogin » n'a pas de clé définie. Définissez la clé pour cet EntityType. – Diin
C'est un problème totalement indépendant. Pour cela, l'erreur est assez explicite: l'entité mentionnée n'a pas de clé définie. Basé sur le nom de la classe, vous avez probablement oublié d'hériter de IdentityUserLogin. –
Si quelqu'un rencontre un problème similaire à celui que j'avais, ajoutez ceci (ou similaire) à votre override protégé par identityconfig protected OnModelCreating (DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add (nouveau GalleryCat.Config()); modelBuilder.Entity(). HasKey (l => l.UserId); modelBuilder.Entity (). HasKey (r => r.RoleId); modelBuilder.Entity (). HasKey (r => nouveau {r.RoleId, r.UserId}); } –
Diin