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。将条目作为单独的模型类的原因是,它不仅与用户关联,条目还与另一个模型“挑战”关联。看起来这些帖子之一可能会有所帮助:和