FOREIGN KEY可能会导致循环或多个级联路径异常

苏达夫

我正在尝试使用EF Code First方法创建数据库。

我有3个有关系的表。

+--------+                 +---------+
|  Users |                 | Groups  |
+--------+                 +---------+
|        |  ----------->   |         |
|________|                 |_________|

    |                            |
    |      +--------------+      |
    +--->  |Group Messages|  <---+
           +--------------+
           |              |
           |______________|

箭头表示级联删除方向。

public DBUser()
        {
            GroupMessages = new Collection<DBGroupMessage>();
            Groups = new Collection<DBGroup>();
        }    
        public Guid Id { get; set; }
        public virtual ICollection<DBGroupMessage> GroupMessages { get; set; }
        public virtual ICollection<DBGroup> Groups { get; set; }

public class DBGroup
    {
        public DBGroup()
        {
            GroupMessages = new Collection<DBGroupMessage>();
        }
        public Guid Id { get; set; }                   
        [Required]
        public Guid OwnerID { get; set; }    
        public DBUser Owner { get; set; }    
        public virtual ICollection<DBGroupMessage> GroupMessages { get; set; } 
    }

public class DBGroupMessage
    {
        public DBGroup Group { get; set; }    
        [Required]
        public Guid GroupID { get; set; }    
        public Guid Id { get; set; }    
        public DBUser Owner { get; set; }    
        [Required]
        public Guid OwnerID { get; set; }
    }

用Fluent API定义的PK和FK。

 modelBuilder.Entity<DBGroup>().HasKey(t => t.Id);
 modelBuilder.Entity<DBGroup>().HasRequired(t => t.Owner).WithMany(t => t.Groups);

modelBuilder.Entity<DBGroupMessage>().HasKey(t => t.Id);
modelBuilder.Entity<DBGroupMessage>().HasRequired(t => t.Owner).WithMany(t => t.GroupMessages);
modelBuilder.Entity<DBGroupMessage>().HasRequired(t => t.Group).WithMany(t => t.GroupMessages);
modelBuilder.Entity<DBUser>().HasKey(t => t.Id);
modelBuilder.Entity<DBUser>().HasMany(t=>t.GroupMessages).WithRequired(t=>t.Owner).WillCascadeOnDelete(false);

在创建模型,可以抛出System.Data.SqlClient.SqlExceptionEntityFramework.dll

信息:

Introducing FOREIGN KEY constraint 'FK_dbo.DBGroupMessages_dbo.DBUsers_OwnerID' on table 'DBGroupMessages' may cause cycles or multiple cascade paths.

Google帮不了我-_-

安德鲁·弗拉纳根(Andrew Flanagan)

与调用WillCascadeOnDelete(false)相比,它在另一个表上引发异常。FK约束位于DBGroupMessages表上。我对Fluent API的语法不是很熟悉,但是您应该在Stack Overflow上找到一些很好的示例。

例如这个

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在表 'Y' 上引入 FOREIGN KEY 约束 'X' 可能会导致循环或多个级联路径

引入FOREIGN KEY约束可能会导致循环或多个级联路径

引入FOREIGN KEY约束可能会导致循环或多个级联路径-为什么?

SQL Server 引入 FOREIGN KEY 约束可能会导致循环或多个级联路径

ef core 2 - 在表“Y”上引入 FOREIGN KEY 约束“X”可能会导致循环或多个级联路径

引入FOREIGN KEY约束可能会导致循环或多个级联路径。指定删除时不执行任何操作

如何防止错误:在表上引入FOREIGN KEY约束可能会导致循环或多个级联路径

可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束

Entity Framework Core 5 - 在表上引入 FOREIGN KEY 约束可能会导致循环或多个级联路径

SQL错误:引入FOREIGN KEY约束可能会导致循环或多个级联路径。实体框架核心

在表 'ReservedSeats' 上引入 FOREIGN KEY 约束 'FK_ReservedSeats_Seats_SeatId' 可能会导致循环或多个级联路径

在表“ Employer”上引入FOREIGN KEY约束“ FK__Employer__postal__59FA5E80”可能会导致循环或多个级联路径

在表上引入FOREIGN KEY约束可能会导致循环或多个级联路径,即使在完全删除受影响的字段之后也是如此

SQL可能会导致循环或多个级联路径

FK约束可能会导致循环或多个级联路径

外键约束可能会导致循环或多个级联路径?

EF Core DeleteBehavior.Cascade可能会导致循环或多个级联路径

外键约束可能会导致循环或多个级联路径,但只能在一个项目中

实体框架核心:如何解决?引入外键约束可能会导致循环或多个级联路径

实体框架代码的第一个外键可能会导致循环或多个级联路径

由于级联删除而导致的“ FOREIGN KEY约束引入”

实体框架级联删除-FOREIGN KEY约束

MySQL FOREIGN KEY错误,已删除级联

即使Foreign_keys为ON,FOREIGN KEY约束也会失败

与FOREIGN KEY约束冲突

SQL FOREIGN KEY的

EF Core-可能导致循环或多个级联路径

Post Repost 可能导致循环或多个级联路径

SQL会自动使“ REFERENCE”成为“ FOREIGN KEY”