Je suis en train de créer une relation plusieurs à plusieurs en utilisant EFCore sur la même classe d'utilisateur que je basé sur EntityFrameworkCore.IdentityUser en suivant les instructions décrites here, here et here. J'ai la classe utilisateur suivant:plusieurs à plusieurs sur la même classe ne fonctionne pas
public class MyApplicationUser : IdentityUser
{
public virtual ICollection<MyApplicationUserJunction> MyApplicationUsers { get; set; }
public virtual ICollection<MyApplicationUserJunction> ManagingMyApplicationUsers { get; set; }
}
Voici ma table rejoindre:
public class MyApplicationUserJunction
{
public int MyApplicationUserId { get; set; }
public virtual MyApplicationUser MyApplicationUser { get; set; }
public int ManagedMyApplicationUserId { get; set; }
public virtual MyApplicationUser ManagedMyApplicationUser { get; set; }
}
Voici mon OnModelConfiguring:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<MyApplicationUserJunction>()
.HasKey(uj => new { uj.ManagedMyApplicationUserId, uj.MyApplicationUserId});
builder.Entity<MyApplicationUserJunction>()
.HasOne(uj => uj.MyApplicationUser)
.WithMany(qu => qu.MyApplicationUsers)
.HasForeignKey(uj => uj.MyApplicationUserId).OnDelete(DeleteBehavior.Restrict);
builder.Entity<MyApplicationUserJunction>()
.HasOne(uj => uj.ManagedMyApplicationUser)
.WithMany(qu => qu.ManagingMyApplicationUsers)
.HasForeignKey(uj => uj.ManagedMyApplicationUserId);
}
Chaque fois que je lance les outils EFCore ajoutent commande migrations, je obtenez l'erreur suivante:
The relationship from 'MyApplicationUserJunction.MyApplicationUser' to 'MyApplicationUser.MyApplicationUsers' with foreign key properties {'MyApplicationUserId' : int} cannot target the primary key {'Id' : string} because it is not compatible. Configure a principal key or a set of compatible foreign key properties for this relationship.
J'utilise le paquet EntityFrameworkCore.Tools.DotNet 1.0.0-preview3-final.
J'ai essayé d'utiliser une seule propriété de navigation sur la classe User, et j'ai essayé de ne pas spécifier la fonction WithMany comme décrit here mais sans succès.
Lire la documentation pour [IdentityUser.Id] (https://msdn.microsoft.com/library/microsoft.aspnet.identity.entityframework.identityuser.id (v = vs.111) .aspx) et jetez un oeil au type. La propriété de clé étrangère doit être du même type –
Merci! Je vais regarder en utilisant int comme clé primaire dans UserIdentity. – majjam
Avez-vous réussi à le faire fonctionner? Si oui, veuillez répondre à la question pour partager les connaissances. –