0

我有这两个实体:

public class Profile
{
    public int ProfileID { get; set; }

    public ICollection<Friend> Friends { get; set; }
}

public class Friend : BaseEntity
{
    public int FriendID { get; set; }

    public int ProfileID { get; set; }
    [ForeignKey("ProfileID")]
    public Profile Profile { get; set; }

    public int FriendProfileID { get; set; }
    [ForeignKey("FriendProfileID")]
    public Profile FriendProfile { get; set; }
}

我想很清楚我想要做什么。我希望个人资料能够拥有一组引用其他个人资料的朋友。如果没有在 OnModelCreating 中指定任何内容,我会收到以下错误:

在表 'Friends' 上引入 FOREIGN KEY 约束 'FK_dbo.Friends_dbo.Profiles_FriendProfileID' 可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

这意味着我需要在上下文的 OnModelCreating 方法中使用流利的 API 指定 WillCascadeOnDelete(false)。但是,我似乎无法使用这些关系找出正确的语法。

如何解决级联删除周期并让实体框架容忍这种关系?

4

1 回答 1

1

你是对的,你需要向 OnModelCreating() 添加一个流畅的映射。尝试这样的事情:

modelBuilder.Entity<Friend>()
                .HasOptional(x => x.FriendProfile )  //or HasRequired
                .WithMany()
                .WillCascadeOnDelete(false);
于 2013-01-16T19:55:32.167 回答