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"))
}
//...
}