a{ id } 是主表 b{ id,a_id } 是子表,b.a_id实际上就是a.id,a与b是一对多的关系。
一般来说 导航属性就是 b里面加上属性成员a
b{
id,
a_id,
[foreignKey("a_id")]
a a
}
而a里面也可以加上属性成员 b的集合
a{
id,
List<b> list
}
那么 现在我的问题是 b里面有2个字段都是指向a的主键
b{
id,
a_id1,
[foreignKey("a_id1")]
a a1
a_id2,
[foreignKey("a_id2")]
a a2
}
那我有什么办法在a里面定义b子集 list ,使得list是通过关系 a_id1关联获取的,而不是关系a_id2关联获取到的
a{
id,
list<b> list
}
试试下面的关系配置
EntityTypeBuilder<a>.HasMany(a => a.list).WithOne().HasForeignKey(b => b. a_id1);
请问这代码放在哪里执行呢
@lindping: DbContext 的继承类中
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
@dudu:
运行报错 列名 'a_id1' 无效。
@dudu:
EntityTypeBuilder<a>.HasMany(a => a.list).WithOne(p => p.a );
这样是可以的,谢谢
建议格式化下代码,看的太费劲
– 会长 2年前