【发布时间】:2018-07-22 12:32:05
【问题描述】:
我有两张桌子:
dbo.Dashboards
Id (int PK) Title(nvarchar) WidgetIds(nvarchar)
1 Test [1,2]
dbo.Widgets
Id (int PK) Details(nvarchar)
1 {'text': 'some data'}
2 {'text': 'test'}
预期输出:
Dashboard.Id Dashboard.Title Widget.Id Widget.Details
1 Test 1 {'text': 'some data'}
1 Test 2 {'text': 'test'}
我想通过使用 Entity Framework 来获得带有指定小部件的仪表板。
我的第一个解决方案是获取dbo.Dashboards,然后获取dbo.Widgets。之后我可以将它合并到后端,但这不是最佳实践。
是否有任何选项可以获取带有指定小部件列表的仪表板?
函数 Include() 不起作用,因为表之间没有 FK 关系。
【问题讨论】:
-
另外请添加所需的输出
-
看起来您正在表中存储一些 Json 编码数据。我想这是一个现有的数据库,你不能改变它——你能确认一下吗?如果是,
WidgetIds列对于空列表(例如null或[])和单个项目列表(例如[1])包含什么? -
这是一个现有的数据库,但如果我有严重的原因,我有机会更改它。
WidgetIds对于空列表包含空数组[],对于单个项目,它包含具有一个元素的数组,例如。[1]。也就是说,该列包含JSON,我们可以使用SQL函数OPENJSON()轻松打开它。
标签: sql entity-framework foreign-keys left-join entity-framework-core