Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 由于异常';无法在mvc 4中创建模型;多个级联路径';_C#_Sql Server_Entity Framework_Asp.net Mvc 4 - Fatal编程技术网

C# 由于异常';无法在mvc 4中创建模型;多个级联路径';

C# 由于异常';无法在mvc 4中创建模型;多个级联路径';,c#,sql-server,entity-framework,asp.net-mvc-4,C#,Sql Server,Entity Framework,Asp.net Mvc 4,我有三个模型课: 用户 进入 门特利克斯 详情如下: public class User { [Required] public int ID { get; set; } [Required] [DataType(DataType.Text)] public string Name { get; set; } } public class Entry { [Required] public int ID { get; set; }

我有三个模型课:

  • 用户
  • 进入
  • 门特利克斯
  • 详情如下:

    public class User
    {
        [Required]
        public int ID { get; set; }
    
        [Required]
        [DataType(DataType.Text)]
        public string Name { get; set; }
    }
    public class Entry
    {
        [Required]
        public int ID { get; set; }
    
        public int UserID { get; set; }
        [ForeignKey("UserID")]
        public virtual User User { get; set; }
    }
    public class EntryLike
    {
        [Required]
        public int ID { get; set; }
    
        [Required]
        public int UserID { get; set; }
        [ForeignKey("UserID")]
        public virtual User User { get; set; }
    
        [Required]
        public int EntityID { get; set; }
        [ForeignKey("EntityID")]
        public virtual Entry Entry { get; set; }
    }
    
    执行后,我得到了以下异常:

    引入外键约束 表“EntryLikes”上的“FK_dbo.EntryLikes_dbo.EntryLikes_EntityID”可能 导致循环或多个级联路径。指定在删除时不执行任何操作或 更新时不执行任何操作,或修改其他外键约束。能够 不创建约束。请参阅前面的错误


    为什么您与EntryLike和Entry中的用户有外键关系?假设Entry类上的Entry和User之间存在关系,那么EntryLike类上不需要关系,因为EntryLike和Entry之间的关系可以推断出这种关系。此外,EntryLike上的外键id属性是否应称为EntryID而不是EntityID


    编辑:这是因为您有多个到用户的级联路径-一个是Entry>User,另一个是EntryLike>Entry>User。您需要关闭级联删除以阻止此错误的发生。我在评论中添加的链接应该会让您走上正确的轨道。

    您必须至少为所涉及的关系
    EntryLike
    中的一个禁用级联删除。默认情况下,对于每个必需的一对多关系,都会启用级联删除。您需要使用流畅的API来实现这一点,但使用数据注释是不可能的。例如:

    modelBuilder.Entity<EntryLike>()
        .HasRequired(el => el.Entry)
        .WithMany()
        .HasForeignKey(el => el.EntryID)
        .WillCascadeOnDelete(false);
    
    modelBuilder.Entity()
    .HasRequired(el=>el.Entry)
    .有很多
    .HasForeignKey(el=>el.EntryID)
    .WillCascadeOnDelete(假);
    
    谢谢你给我时间。对不起,拼写错误。实际上它是EntryID。场景是:一个用户可以有很多条目,一个用户可以喜欢其他用户的条目(就像我们喜欢其他facebook用户的照片一样)。EntryLikes模型用于跟踪这种喜好。我们从EntryLikes中组成的条目中获得的用户ID将是该条目所有者的用户ID,但我们希望保留喜欢该条目的用户的记录。希望我能更好地解释这个场景。好吧,但据我所知,你并不是在用另一种方式来模拟关系。一个用户可以有许多未被捕获的条目。在用户类上需要一个类似于
    public virtual IEnumerable Entries{get;set;}
    的属性来表示关系的这一方面。为了表示这种一对多关系,我在条目模型中保留UserID。将条目作为单独的模型类的原因是,它不仅与用户关联,条目还与另一个模型“挑战”关联。看起来这些帖子之一可能会有所帮助:和