EF Core 从元数据中获取反向导航 属性
EF Core getting inverse navigation property from metadata
考虑模型 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( ... )
中的配置)与 "inverse navigation property" Person.AssignedItem
(如 WithOne( ... )
中的配置)相关联
- 同样,属性
TodoItem.Reviewer
是 "inversely related" 到 Person.ReviewItem
我想我正在尝试弄清楚如何访问 modelBuilder.Hasxxx( ... ) and modelBuilder.Withxxx( ... )
方法中的配置集。
我需要这个,因为我正在反射性地遍历嵌套数据结构的查询结果集,需要确保我的算法是前瞻性的。
EF Core 元数据中的导航由 INavigation interface. They can be obtained from IEntityType using GetNavigations or FindNavigation 扩展方法表示。
一旦你有了INavigation
,就可以用FindInverse扩展方法获得反向导航(如果存在的话)。
您可以在我对 的回答中看到示例导航遍历。
考虑模型 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( ... )
中的配置)与 "inverse navigation property"Person.AssignedItem
(如WithOne( ... )
中的配置)相关联 - 同样,属性
TodoItem.Reviewer
是 "inversely related" 到Person.ReviewItem
我想我正在尝试弄清楚如何访问 modelBuilder.Hasxxx( ... ) and modelBuilder.Withxxx( ... )
方法中的配置集。
我需要这个,因为我正在反射性地遍历嵌套数据结构的查询结果集,需要确保我的算法是前瞻性的。
EF Core 元数据中的导航由 INavigation interface. They can be obtained from IEntityType using GetNavigations or FindNavigation 扩展方法表示。
一旦你有了INavigation
,就可以用FindInverse扩展方法获得反向导航(如果存在的话)。
您可以在我对