【问题标题】:How to create a self referencing table using code first?如何首先使用代码创建自引用表?
【发布时间】:2017-08-30 08:09:00
【问题描述】:

我有一个在父子关系中引用自身的实体。我需要先了解如何使用代码和流畅的 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_Target”中的引用约束 关系'MenuItem_Parent'。因为所有的属性在 依赖角色是不可为空的,主要角色的多重性 必须是“1”。

感谢所有帮助。

谢谢。

【问题讨论】:

    标签: entity-framework ef-code-first self-referencing-table


    【解决方案1】:

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

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

    public int? ParentId { get; set; }

    【讨论】:

      猜你喜欢
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2013-10-11
      • 2012-01-10
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多