Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架6使用Fluent API配置模型_C#_Entity Framework - Fatal编程技术网

C# 实体框架6使用Fluent API配置模型

C# 实体框架6使用Fluent API配置模型,c#,entity-framework,C#,Entity Framework,我有层次模型(二叉树) 班级伙伴 { 公共int ID{get;set;} 公共字符串名称{get;set;} //树中的父对象。 公共虚拟伙伴BinarParent{get;set;} //谁是树上受邀的伙伴。 公共虚拟伙伴发起人{get;set;} //儿童伴侣。 公共虚拟列表子项{get;set;} } 我现在有个例外: 无法确定类型“Partner”和“Partner”之间关联的主体端。必须使用关系fluent API或数据注释显式配置此关联的主体端 如何使用Fluent API为此模

我有层次模型(二叉树)

班级伙伴
{
公共int ID{get;set;}
公共字符串名称{get;set;}
//树中的父对象。
公共虚拟伙伴BinarParent{get;set;}
//谁是树上受邀的伙伴。
公共虚拟伙伴发起人{get;set;}
//儿童伴侣。
公共虚拟列表子项{get;set;}
}
我现在有个例外:

无法确定类型“Partner”和“Partner”之间关联的主体端。必须使用关系fluent API或数据注释显式配置此关联的主体端

如何使用Fluent API为此模型配置导航属性(赞助商和二进制父级)

附言

  • 模型“Partner”存储在表“Partners”中
  • 如果删除其中一个属性(赞助商或BinaryPartner),则不会引发异常

请帮帮我。

在您的上下文中执行此操作:

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"))

    }
    //...
}
public类YourContext:DbContext
{
//...
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
//为合作伙伴配置主键
modelBuilder.Entity().HasKey(t=>t.ID);
//映射一对多关系
modelBuilder.Entity()
.HasMany(p=>p.Childs)
.with可选(p=>p.BinarParent);
modelBuilder.Entity()
.has可选(t=>t.赞助商)
.WithOptionalDependent()
.Map(t=>t.MapKey(“FK\U赞助商Id”))
}
//...
}

第一个关系将BinarParent属性映射到Child集合。第二个关系映射了财产发起人

谢谢你的回复。我想我解释得不好。一个“合伙人”可以有许多“合伙人”,他邀请了他们。重要的每个合伙人只需有一名“赞助商”和一名“双亲”。“赞助商”和“BinarParent”也是“合伙人”。当然,我可以删除导航属性,转而声明SponsorID和BinarParentID。但是如果可能的话,我想使用导航属性配置所有相同的作业。另外,“合作伙伴”是传销的一种结构。所以,我想你有一个在你的合作伙伴类中声明的合作伙伴列表。你能证实吗?
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"))

    }
    //...
}