私はこれらの2つのエンティティを持っています:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public bool? IsActive { get; set; }
public bool? IsAdmin { get; set; }
public bool? DeletedFlag { get; set; }
public DateTime LastLoginDate { get; set; }
public DateTime CreatedDate { get; set; }
public virtual ICollection<Vote> VoterUser { get; set; }
public virtual ICollection<Vote> VotedUser { get; set; }
}
public class Vote
{
public int Id { get; set; }
public DateTime VoteDate { get; set; }
public int Rate { get; set; }
public int UserId { get; set; }
public int VoterId { get; set; }
public User VotedUser { get; set; }
public User VoterUser { get; set; }
}
流れるような API では、次のような外部キーが定義されています。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasKey(x => x.Id).Property(x => x.Id).IsRequired();
modelBuilder.Entity<User>().HasMany(x => x.VotedUser).WithRequired(q => q.VotedUser).HasForeignKey(
q => new {q.UserId});
modelBuilder.Entity<User>().HasMany(x => x.VoterUser).WithRequired(q => q.VoterUser).HasForeignKey(
q => new {q.VoterId});
modelBuilder.Entity<Vote>().HasKey(x => x.Id).Property(x => x.Id).IsRequired();
modelBuilder.Entity<Vote>().HasRequired(x => x.VotedUser).WithMany().HasForeignKey(p => p.UserId);
modelBuilder.Entity<Vote>().HasRequired(x => x.VoterUser).WithMany().HasForeignKey(p => p.VoterId);
base.OnModelCreating(modelBuilder);
}
しかし、私が得たデータベースを作成しようとすると;
「テーブル 'Votes' に FOREIGN KEY 制約 'FK_Votes_Users_UserId' を導入すると、サイクルまたは複数のカスケード パスが発生する可能性があります。ON DELETE NO ACTION または ON UPDATE NO ACTION を指定するか、他の FOREIGN KEY 制約を変更してください。制約を作成できませんでした。前のエラーを参照してください。」
どこで間違えますか?
ありがとう