0

ASP.NETコアにユーザーリレーションシップテーブルを作成していくつかの問題が発生します。このためカスケード削除を無効にする必要がある場合、どのようにして孤児を防ぐのですか?ユーザーリレーションシップテーブルを作成します

エラー:

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

私の現在のモデル:EFは、カスケード接続されますので、二度、デフォルトでは、削除要求されるよう

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

答えて

0

あなたがするApplicationUsersを持っています同じクラス(here参照)に。 HasRequiredという名前のメソッド()ありません

builder.Entity<UserRelationship>().HasOne(ur => ur.User1).WithMany().HasForeignKey(ur => ur.UserId1).WillCascadeOnDelete(false); 

builder.Entity<UserRelationship>().HasOne(ur => ur.User2).WithMany().HasForeignKey(ur => ur.UserId2).WillCascadeOnDelete(false); 
+0

あなたがいないと、それを伝える必要があります。私は何かが恋しいですか? – Zack

+0

カスケード削除を無効にすると、どのようにして孤児を防ぐことができますか? – Zack

+0

申し訳ありませんが、それがEFコアであることを認識していませんでした。 [ここ](https://docs.microsoft.com/en-us/ef/core/modeling/relationships)を参照してください。 UserRelationshipを削除すると、ユーザーを削除したくないと思っています。ユーザーを削除すると、既存の関係レコードをチェックして最初に削除することができます([ここ](https://stackoverflow.com/questions/16565078/delete-parent-with-children-in-one-to-many -関係))。 –

関連する問題