实体框架模型首先自引用

本文关键字:自引用 模型 框架 实体 | 更新日期: 2023-09-27 18:36:43

我看过一堆代码优先的例子,但不是模型优先。

我想创建一个父子关系,其中 ParentId 可为空,如果类别确实是子类别,它将具有 ParentId。

当我通过设计器执行此操作时,它最终生成了这个......这看起来与我试图创建的内容相反:

public partial class Category : NWatchObjectBase
{
    public Category()
    {
        this.Tags = new HashSet<Tag>();
        this.Parent = new HashSet<Category>();
    }
    public int Handle { get; set; }
    public string Name { get; set; }
    public Nullable<long> ParentId { get; set; }
    public virtual ICollection<Tag> Tags { get; set; }
    public virtual CasModelClass ModelClass { get; set; }
    public virtual ICollection<Category> Parent { get; set; }
    public virtual Category Child { get; set; }
}

实体框架模型首先自引用

我认为你需要这样的东西。EF 应优雅地处理此问题。

public partial class Category : NWatchObjectBase
{
    public Category()
    {
        this.Tags = new HashSet<Tag>();
        this.Children = new HashSet<Category>();
    }
    public int Handle { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Tag> Tags { get; set; }
    public virtual CasModelClass ModelClass { get; set; }
    public virtual ICollection<Category> Children { get; set; }
    public virtual Category Parent { get; set; }
}