我试图创建一个(在我看来)非常简单的设置,但我无法弄清楚为什么我在运行 Update-Database
时不断收到此错误:
在表'Breweries'上引入FOREIGN KEY约束'FK_dbo.Breweries_dbo.Pages_PageId'可能会导致循环或多个级联路径 . 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束 .
我正在尝试设置此结构:
Brewery
> Page
> IdentityUser
这是我的课程:
public class Brewery
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public Guid BreweryId { get; set; }
[Required]
public string Name { get; set; }
[Required]
[ForeignKey("Page")]
public Guid PageId { get; set; }
public virtual Page Page { get; set; }
public virtual ICollection<Image> Images { get; set; }
}
public class Page
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public Guid PageId { get; set;}
[Required]
public string Title { get; set; }
public string Content { get; set; }
[Required]
[ForeignKey("CreatorUser")]
public string CreatorUserId { get; set; }
public virtual IdentityUser CreatorUser { get; set; }
}
我已经看过很多其他的Stack Overflow帖子,看起来我应该在_961644中设置一些内容,但我无法做到 . 我想避免在 Page
上有 ICollection<Brewery> Breweries
属性,因为我想要许多不同的实体来引用 Page
实体,并且它与引用它的 Page
无关 .
我是Entity Framework和Code First的新手,所以我可能在不知情的情况下接近了这个错误 . 我将不胜感激任何设置正确关系的帮助 .
1 回答
由于需要
Page
和Brewery
之间的关联,因此EF默认为级联删除 . 但是如果有很多实体引用Page
,则会有多个级联路径,您必须覆盖默认值:您只能通过流畅的映射来完成此操作 . 此外,这将替换
Brewery.PageId
上的属性 .