我正在尝试制作一个通用报告系统,以便我可以动态地将报告添加到我的程序中,而不是每次必须添加报告时都发布新版本的程序。
目前,我已经部分工作了;
我的自定义报告 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();
}
我尝试过更换dynamic
with object
并遇到同样的问题...
我知道最好的解决方案是拥有一个自定义类并替换dynamic
使用该自定义类,但随后我失去了它通用的好处,因为不同的报告可能不会返回相同的结果,并且我需要一个新的自定义类...
Use SqlDataAdapter
and DataSet
。 EF 不适用于没有特殊类型结果集的“动态查询”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)