关于c#:实体框架一对多在一张表中

Entity framework one to many in one table

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[Table("Menus")]
public class Menus
{
    /// <summary>
    /// Table"Menus", ID
    /// </summary>
    private int _ID;
    [Key]
    [Display(Name ="ID")]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID
    {
        get { return _ID; }
        set { _ID = value; }
    }

    /// <summary>
    /// Table"Menus", MenuName
    /// </summary>
    private string _MenuName;
    [Display(Name ="MenuName")]
    public string MenuName
    {
        get { return _MenuName; }
        set { _MenuName = value; }
    }

    /// <summary>
    /// Table"Menus", ParentID
    /// </summary>
    private int _ParentID;
    [Display(Name ="ParentID")]
    public int ParentID
    {
        get { return _ParentID; }
        set { _ParentID = value; }
    }
}

我有这张桌子。我希望在 ParentID 上包含"一对多"。我想从列表中选择父 id,并想通过实体框架或流利的 api 来完成,但不知道他们很好。


你会想做这样的事情:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Table("Menus")]
public class Menus
{
    [Key]
    public int ID { get; set; }

    public string MenuName { get; set; }

    [ForeignKey("ParentMenu")]
    public int ParentID { get; set; }

    public virtual Menu ParentMenu { get; set; }

    public virtual List<Menu> ChildMenus { get; set; }
}


一切正常。谢谢。
我删除表中的所有行,然后创建迁移。但该属性必须可以为空:

1
    public int? ParentID { get; set; }