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”。

所有帮助表示赞赏。

谢谢你。

4

1 回答 1

0

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

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

public int? ParentId { get; set; }

于 2017-08-30T08:48:30.710 回答