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

时间:2014-05-01 10:59:34

标签: entity-framework

我已阅读与该主题相关的不同回复,但我不确定如何在我的示例中应用它们。

我有一个可以拥有多个关系的用户。关系是两个用户之间的链接,是一种方式。用户可以拥有多个关注者,可以关注多个用户。

我想强制执行一个关系,以便在数据库中创建两端。 如果我在我的代码第一类中这样做,则无法使用以下错误创建:

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

这是我的背景。

public class TestDataContext : DbContext
{
    public TestDataContext() : base("DefaultConnection") { }

    public DbSet<UserTest> Users { get; set; }
    public DbSet<RelationshipTest> Relationships { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<RelationshipTest>().HasRequired(x => x.User).WithMany().WillCascadeOnDelete(false);
        modelBuilder.Entity<RelationshipTest>().HasRequired(x => x.FollowedBy).WithMany().WillCascadeOnDelete(false);
    }

}

public class UserTest
{
    public long Id { get; set; }

    // User can be following multiple users
    [InverseProperty("User")]
    public ICollection<RelationshipTest> Following { get; set; }

    // User can be followed by multiple users
    [InverseProperty("FollowedBy")]
    public ICollection<RelationshipTest> Followers { get; set; }
}

public class RelationshipTest
{
    public long Id { get; set; }

    [Required] // ISSUE HERE - I can have only a single Required used
    public UserTest User { get; set; }

    [Required] // ISSUE HERE
    public UserTest FollowedBy { get; set; }
}

如何在我的关系中实施2要求?

感谢您的帮助

0 个答案:

没有答案