实体框架 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 为此模型配置导航属性(发起人和二进制父级(?
附言
- 模型"合作伙伴">
- 存储在"合作伙伴"表中。
- 如果我删除其中一个属性(发起人或二进制合作伙伴(,则不会引发异常。
请帮帮我。
在你的上下文中这样做:
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 财产与您的儿童收藏进行映射。第二个关系映射属性发起人。