c# - 实体框架 - 使用 Fluent API 配置获取相关项目而无需显式引用
问题描述
假设我有一个带有可选属性 X 的数据库表 A。我有一个带有复合键 (Y, X) 的表 B。这两个表没有以任何方式明确相关。
例如
create table A
(
Id uniqueidentifier not null,
X uniqueidentifier null
)
create table B
(
Y uniqueidentifier not null,
X uniqueidentifier not null,
Constraint PK_B Primary Key (Y, X)
)
A 和 B 通过属性 X 隐式相关,因为 X 是一个孤立的 id(它的基表已被移出)
对于 C# 代码中的模型 A,如何IList<B>
使用属性 X 进行填充以获取 B 中包含 X 的所有项目?理想情况下,我想使用 Fluent API 配置。
例如
public class A {
public Guid Id {get; set;}
public Guid? X {get; set;}
public IList<B> RelatedItems {get; set;}
}
public class B {
public Guid X {get; set;}
public Guid Y {get; set;}
}
如何使用 Fluent API 配置我的实体,以便我可以使用类似的东西
var list = await context.AQuery()
.Include(a => a.RelatedItems)
.ToListAsync().ConfigureAwait(false);
或任何其他方式在 A 中填充 IList
提前致谢!
解决方案
在你的模型中 ax 是一个属性,一个属性有一个 getter,你可以设置 x 属性的 get 方法从数据库中检索记录(类似于延迟加载设计模式)
public IList<SomeStuff> X {
get { // go get records from database }
}
这将花费你额外的费用,所以我不确定这是否是你想要的
推荐阅读
- mysql - 在用户输入之前匹配特定字符串
- node.js - 使用 Nextjs 应用程序空闲 1 分钟后 Openlitespeed 会话超时
- javascript - 这个 Buefy (Vue + Bulma) 函数在这里做什么?
- java - 排序无法正常工作!Java 排序
- python-3.x - 为什么 PIL 无法显示图像并显示错误“在“文件:///tmp/tmp .....PNG”中找不到图像
- python - 无法加载 Qt 平台插件“Ubuntu 20.04”
- angular - 一个选择器用于多种特征状态
- c# - 模式匹配比检查对象中的标志快得多!!?为什么?
- python - 如何为 python 3 windows 安装 Scapy_http
- javascript - 从跨度标签获取价格值,并在乘以数字后将其附加到 div 中