【发布时间】:2020-06-16 13:20:49
【问题描述】:
我有一个从复杂查询结果中获取数据的存储过程。因此,为了从该过程中获取数据,我在 Dbcontext 中添加了一个属性及其结果类型。
internal DbQuery<Dashboard> Dashboard { get; set; }
这里我自己定义了Dashboard 模型。
当过程的结果列是静态的时,它可以正常工作,但问题是有时来自过程的结果集可能具有动态列。所以我也需要相应地更改我的Dashboard 模型。
如何通过在声明 Dbcontext 属性时添加动态类型来管理此问题?
我刚刚用另一种方式尝试过
目前我有一组静态数据
IQueryable<DynamicDashboard> fullJoinedResult = context.DynamicDashboard.FromSql("dbo.DynamicDashboard").DefaultIfEmpty().AsQueryable();
现在对于我需要的每个动态字段,我将我当前的静态数据与动态表数据进行左连接
我已将我的动态字段存储在此列表中
var selectedDynamicFields = new List<DashboardFields>();
var proposalDynamicDatas = context.ProposalDynamicData.Where(w => selectedDynamicFields.Select(s => s.FormFieldId).Contains(w.FormFieldId)).ToList();
foreach (var field in selectedDynamicFields)
{
var qry = resultSet.GroupJoin(proposalDynamicDatas.Where(w=>w.FormFieldId=field.FieldId).AsEnumerable(),
"ProposalId", "ProposalId", "new(outer.ProposalId as Foo,inner.ProposalId as
Bars)");
};
我可以在这个 for 循环中动态更改我的结果集吗? 当前我在 GroupJoin 中遇到错误,它在 IEnumerable 中说 No 'ProposalId'。查不出来
【问题讨论】:
标签: .net entity-framework asp.net-core entity-framework-core