错误号:1785,状态:0,类:16引入FOREIGN KEY约束可能会导致循环或多个级联路径

我正在使用EF Core CodeFirst生成数据库

这是我的Entity类:

public class User
    {
        public int UserId { get; set; }
        public string Name { get; set; }
        public string Lastname { get; set; }
        public string MotherSurname { get; set; }
        public string PhoneNumber { get; set; }
        public string Email { get; set; }
        public virtual List<Friend> FriendsWith { get; set; }
        public virtual List<Friend> FriendsOf { get; set; }
        public virtual List<Post> Posts { get; set; }
        public virtual List<Chat> SentMessages { get; set; }
        public virtual List<Chat> RecievedMessages { get; set; }
    }
public class Chat
    {
        public int ChatId { get; set; }

        public User SenderUser { get; set; }
        public int SenderUserId { get; set; }

        public Message Message { get; set; }
        public int MessageId { get; set; }

        public User TargetUser { get; set; }
        public int TargetUserId { get; set; }
    }
 public class Message
    {
        public int MessageId { get; set; }
        public string MessageToSend { get; set; }

        public Chat Chat { get; set; }
    }
public class Friend
    {
        public int FriendId { get; set; }

        public User User { get; set; }
        public int UserId { get; set; }

        public User FriendUser { get; set; }
        public int FriendUserId { get; set; }

        public bool Isaccepted { get; set; }
    }
    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }

        public User User{ get; set; }
        public int UserId { get; set; }
    }

还有我构建的上下文:

public class SocialNetworkContext: DbContext
    {
        public SocialNetworkContext(DbContextOptions<SocialNetworkContext> options)
           : base(options)
        {
        }

        protected override void Onconfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(@"Server=BOT-JGONZALEZA;Database=SocialNetworkDB;Trusted_Connection=True;");
        }

        protected override void OnmodelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Friend>().HasOne(f => f.User).WithMany(u => u.FriendsWith).HasForeignKey(f => f.UserId).OnDelete(DeleteBehavior.Noaction);

            modelBuilder.Entity<Friend>().HasOne(f => f.FriendUser).WithMany(u => u.FriendsOf).HasForeignKey(f => f.FriendUserId).OnDelete(DeleteBehavior.Noaction);

            modelBuilder.Entity<Post>().HasOne(p => p.User).WithMany(u => u.Posts).HasForeignKey(p => p.UserId);

            modelBuilder.Entity<Chat>().HasOne(c => c.SenderUser).WithMany(u => u.SentMessages).HasForeignKey(c => c.SenderUserId).OnDelete(DeleteBehavior.Noaction);

            modelBuilder.Entity<Chat>().HasOne(c => c.TargetUser).WithMany(u => u.RecievedMessages).HasForeignKey(c => c.TargetUserId).OnDelete(DeleteBehavior.Noaction);

            modelBuilder.Entity<Message>().HasOne(m => m.Chat).WithOne(c => c.Message).HasForeignKey<Chat>(c => c.MessageId);

        }

        public DbSet<User> Users { get; set; }
        public DbSet<Post> Posts { get; set; }
        public DbSet<Message> Messages { get; set; }
        public DbSet<Chat> Chats { get; set; }
        public DbSet<Friend> Friends { get; set; }
    }

当我尝试update-database时,会不断出现以下错误:

错误号:1785,状态:0,类:16 在表“聊天”中引入外键约束“ FK_Chats_Users_TargetUserId”可能会导致循环或多个级联路径。指定ON DELETE NO actION或ON UPDATE NO actION,或修改其他FOREIGN KEY约束。 无法创建约束或索引。查看先前的错误。

layjung0 回答:错误号:1785,状态:0,类:16引入FOREIGN KEY约束可能会导致循环或多个级联路径

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2708080.html

大家都在问