admin

实体框架自定义SQL查询返回通用类型

sql

我正在尝试建立一个通用的报告系统,以便可以将报告即时添加到我的程序中,而不是每次必须添加报告时都发布该程序的新版本。
目前,我有部分工作;
我的自定义报告SQL与报告名称一起存储在表中。报表名称用于用户单击的按钮,当用户单击按钮时,我希望SQL执行并绑定到gridview,因此它尽可能通用。

尽管这似乎是麻烦的出处。获取SQL并执行它是可以的,但是将它绑定到gridview似乎是不可能的,我只得到一列,称为Column,它显示1行,其值为System.Object。

我认为问题是因为我要从多个表返回数据,即

SELECT c.CertificateName, e.EntityName, 
       ce.CertificateDate, ce.CertificateExpiry, ce.CertificateNumber 
FROM FCERTSTest.dbo.CertificateEntries ce 
INNER JOIN FCERTSTest.dbo.Certificates c 
ON c.CertificateID = ce.Certificate_ID 
INNER JOIN FCERTSTest.dbo.Entities e 
ON e.EntityID = ce.Entity_ID 
WHERE FirstNotificationSent = '1'

我目前正在使用

using (DBContainer db = new DBContainer())
{
    grid.DataSource = db.Database.SqlQuery<dynamic>(SQLCommand).ToList();
}

我试着更换dynamicobject,并得到了同样的问题。我明白,最好的解决办法是有一个自定义类和替换dynamic与自定义类,但后来我失去了它的好处是通用为不同的报表可能不会返回相同的结果,我将需要一个新的自定义类…


阅读 137

收藏
2021-06-07

共1个答案

admin

使用SqlDataAdapterDataSet。EF不适用于您没有针对结果集的特殊类型的“动态查询”。

2021-06-07