EF Code First Fluent Mapping:0-1到Many:HasOptional(),同一个表

Elv*_*dov 4 c# entity-framework one-to-many fluent-nhibernate ef-code-first

我有一个"类别"实体如下:

 public class Category
 {
    //<Summary>
    //Fields...
    //</Summary>

    public Guid CategoryId { get; set; }

    public string CategoryName { get; set; }

    public bool IsDelete { get; set; }

    // Fields for relationships
    public Guid MainCategoryId { get; set; }
    public Category MainCategory { get; set; }

    public virtual ICollection<Category> ChildCategories { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

如上所示,我想在同一个表中创建0-one-to-many关系.我使用Fluent API如下:

 HasRequired(category => category.MainCategory)
            .WithMany(category => category.ChildCategories)
            .HasForeignKey(category => category.MainCategoryId);
Run Code Online (Sandbox Code Playgroud)

但它是一对多的,不是0-1对多.我使用HasOptional,但它给了我一个错误.

如何使用Fluent API执行此操作?

谢谢你的答复

Vya*_*kov 6

使MainCategoryId属性可以为空:

public Guid? MainCategoryId { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后你可以使用HasOptional方法:

HasOptional(category => category.MainCategory)
            .WithMany(category => category.ChildCategories)
            .HasForeignKey(category => category.MainCategoryId);
Run Code Online (Sandbox Code Playgroud)