实体框架 6 使用流利 API 配置模型

本文关键字:API 配置 模型 框架 实体 | 更新日期: 2023-09-27 18:35:04

我有分层模型(二叉树(。

class Partner
{
     public int ID {get; set; }
     public string Name { get; set; }
     // Parent in the tree.
     public virtual Partner BinarParent {get; set;}  
     // Who is invited partner in tree.
     public virtual Partner Sponsor {get; set;}     
     // Childs partners.
     public virtual List<Partner> Childs {get; set;} 
}

我现在有例外:

无法确定类型"合作伙伴"和"合作伙伴"之间关联的主体端。必须使用关系流畅 API 或数据注释显式配置此关联的主体端。

如何使用 Fluent API 为此模型配置导航属性(发起人和二进制父级(?

附言

    模型"合作伙伴">
  • 存储在"合作伙伴"表中。
  • 如果我删除其中一个属性(发起人或二进制合作伙伴(,则不会引发异常。

请帮帮我。

实体框架 6 使用流利 API 配置模型

在你的上下文中这样做:

public class YourContext : DbContext
{
    //...
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
       // Configure the primary key for the Partner
       modelBuilder.Entity<Partner>().HasKey(t => t.ID);
       // Map one-to-many relationship
       modelBuilder.Entity<Partner>()
            .HasMany(p => p.Childs)
            .WithOptional(p => p.BinarParent);

        modelBuilder.Entity<Partner>()
            .HasOptional(t => t.Sponsor)
            .WithOptionalDependent()
            .Map(t => t.MapKey("FK_Sponsor_Id"))
    }
    //...
}

第一个关系将您的 BinarParent 财产与您的儿童收藏进行映射。第二个关系映射属性发起人。