首页 文章

如何首先使用代码创建自引用表?

提问于
浏览
0

我有一个实体,它在父子关系中有自己的引用 . 我需要先了解如何使用代码和流畅的API来实现这一点 . 下面是我的实体类 .

public class MenuItem
{
    public int Id { get; set; }
    public string LinkText { get; set; }
    public string ControllerName { get; set; }
    public string ActionName { get; set; }

    public MenuItem Parent { get; set; }
    public int ParentId { get; set; }

    private IList<Role> Roles;
    private IList<MenuItem> ChildMenuItems;

    public MenuItem()
    {
        Roles = new List<Role>();
        ChildMenuItems = new List<MenuItem>();
    }
}

我尝试在我的实体配置中使用以下代码 .

HasOptional(m => m.Parent)
                .WithMany(m => m.ChildMenuItems)
                .HasForeignKey(m => m.ParentId)
                .WillCascadeOnDelete(false);

但是我收到了这个错误 -

在模型生成期间检测到一个或多个验证错误:Vantage.Data.EF.MenuItem_Parent ::多重性与关系'MenuItem_Parent'中角色'MenuItem_Parent_Target'中的引用约束冲突 . 由于“从属角色”中的所有属性都是不可为空的,因此“主体角色”的多重性必须为“1” .

所有帮助赞赏 .

谢谢 .

1 回答

  • 0

    ParentId字段应该可以为空 . 如果需要parentid,您将无法创建任何记录 .

    只需改变 public int ParentId { get; set; }

    public int? ParentId { get; set; }

相关问题