0
Je souhaite créer une table de relations utilisateur dans ASP.NET Core et rencontrer certains problèmes. Si je dois désactiver la suppression en cascade à cause de cela, comment puis-je empêcher les orphelins?Création d'une table de relations utilisateur
erreur:
Introducing FOREIGN KEY constraint 'FK_UserRelationships_AspNetUsers_User2Id' on table 'UserRelationships' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
ApplicationDbContext.cs:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<UserRelationship>().HasKey(x => new { x.User1Id, x.User2Id });
}
public DbSet<UserRelationship> UserRelationships { get; set; }
}
Mon modèle actuel:
public class UserRelationship
{
public byte RelationshipType { get; set; }
public ApplicationUser User1 { get; set; }
public string User1Id { get; set; }
public ApplicationUser User2 { get; set; }
public string User2Id { get; set; }
}
Il n'y a pas une méthode nommée HasRequired(). Est-ce que je manque quelque chose? – Zack
Si je désactive la suppression en cascade, comment puis-je empêcher les orphelins? – Zack
Désolé, je ne savais pas que c'était EF Core. Voir [ici] (https://docs.microsoft.com/en-us/ef/core/modeling/relationships). Lorsque vous supprimez un UserRelationship, je suppose que vous ne voulez pas supprimer les Utilisateurs. Si vous supprimez un utilisateur, vous pouvez vérifier les enregistrements de relations existants et les supprimer en premier (voir [ici] (https://stackoverflow.com/questions/16565078/delete-parent-with-children-in-one-to-many -relation)). –