请考虑使用模型TodoItem
和Person
进行以下设置
modelBuilder.Entity<TodoItem>()
.HasOne(t => t.Assignee)
// for simplicity lets assume a Person is assigned to only TodoItem
.WithOne(p => p.AssignedItem)
.HasForeignKey(t => t.AssigneeId);
modelBuilder.Entity<TodoItem>()
.HasOne(t => t.Reviewer)
.WithOne(p => p.ReviewItem)
// for simplicity lets assume a Person owns only one TodoItem
.HasForeignKey(t => t.ReviewerId);
可能是使用Microsoft.EntityFrameworkCore.Metadata
进行反思,我该如何找出答案
TodoItem.Assignee
(在HasOne( ... )
中配置)与“反向导航属性” Person.AssignedItem
(在WithOne( ... )
中配置TodoItem.Reviewer
与Person.ReviewItem
“反相关” 我想我想弄清楚如何访问modelBuilder.Hasxxx( ... ) and modelBuilder.Withxxx( ... )
方法中设置的配置。
之所以需要它,是因为我要遍历嵌套数据结构的查询结果集,并且需要确保我的算法具有前瞻性。
答案 0 :(得分:2)
EF INavigation界面表示EF Core元数据中的导航。可以使用IEntityType或GetNavigations扩展方法从FindNavigation获得它们。
一旦有了INavigation
,就可以使用FindInverse扩展方法获得反向导航(如果存在)。
您可以在我对Entity Framework Core 2.0.1 Eager Loading on all nested related entities的回答中看到遍历示例导航。