首页 新闻 会员 周边

关于 net entityframework的导航属性的一个问题

0
悬赏园豆:5 [已解决问题] 解决于 2022-06-17 19:17

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
}

lindping的主页 lindping | 初学一级 | 园豆:3
提问于:2022-06-17 18:02

建议格式化下代码,看的太费劲

会长 1年前
< >
分享
最佳答案
1

试试下面的关系配置

EntityTypeBuilder<a>.HasMany(a => a.list).WithOne().HasForeignKey(b => b. a_id1);
收获园豆:5
dudu | 高人七级 |园豆:30979 | 2022-06-17 18:22

请问这代码放在哪里执行呢

lindping | 园豆:3 (初学一级) | 2022-06-17 18:35

@lindping: DbContext 的继承类中

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
dudu | 园豆:30979 (高人七级) | 2022-06-17 18:50

@dudu:
运行报错 列名 'a_id1' 无效。

lindping | 园豆:3 (初学一级) | 2022-06-17 19:11

@dudu:

EntityTypeBuilder<a>.HasMany(a => a.list).WithOne(p => p.a );

这样是可以的,谢谢

lindping | 园豆:3 (初学一级) | 2022-06-17 19:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册