【问题标题】:Entity Framework Custom SQL Query returning generic type返回泛型类型的实体框架自定义 SQL 查询
【发布时间】:2013-02-07 04:00:25
【问题描述】:

我正在尝试制作一个通用的报告系统,以便我可以在运行中向我的程序添加报告,而不是每次我必须添加报告时都发布一个新版本的程序。
目前,我有部分工作;
我的自定义报告 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();
}

我尝试用object 替换dynamic 并遇到同样的问题... 我知道最好的解决方案是拥有一个自定义类并用该自定义类替换dynamic,但是我失去了它是通用的好处,因为不同的报告可能不会返回相同的结果,我需要一个新的自定义上课...

【问题讨论】:

    标签: sql entity-framework xtragrid


    【解决方案1】:

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

    【讨论】:

    • 啊,谢谢。我想可能是这样。我确实最终使用了SqlDataAdapter 作为临时修复。我现在必须使它更永久。 EF 文档中是否有解释/涵盖缺乏对动态查询的支持的地方?
    • documentation 只讨论具有与结果集中的列匹配的属性的类型。
    猜你喜欢
    • 2018-01-11
    • 1970-01-01
    • 2011-06-25
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多