Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# devart dc.ExecuteQuery返回未设置为对象实例的对象_C#_Hyperlink_Devart - Fatal编程技术网

C# devart dc.ExecuteQuery返回未设置为对象实例的对象

C# devart dc.ExecuteQuery返回未设置为对象实例的对象,c#,hyperlink,devart,C#,Hyperlink,Devart,我最近升级到了devart 7.5,有几个功能不能正常工作。具体来说,我有一个返回IEnumerable的函数: protected IEnumerable<BudgetTotals> getTotals(decimal groupId, decimal budgetId) { using (SsinpatDataContext dc = new SsinpatDataContext()) { object[] ids = new object[2]

我最近升级到了devart 7.5,有几个功能不能正常工作。具体来说,我有一个返回IEnumerable的函数:

protected IEnumerable<BudgetTotals> getTotals(decimal groupId, decimal budgetId)
{
    using (SsinpatDataContext dc = new SsinpatDataContext())
    {
         object[] ids = new object[2] { groupId, budgetId };
         string sqlStr = "..."
         var query = dc.ExecuteQuery<BudgetTotals>(sqlStr, ids);
         return query;
    }
}
现在,当控件在foreach指令中到达“in”时,会抛出一个异常,消息是
“Object not set to a instance of a Object”
,这让我感到困惑,因为

a) 它工作得很好,很好

b) 对象在
getTotals
函数中设置


我可以通过将返回值从
IEnumerable
更改为
BudgetTotals[]
,然后返回
query.ToArray
来解决问题。我试过了,效果很好。这里的主要问题是返回IEnumerable的所有其他函数

在大修应用程序之前,我想了解为什么或是什么导致了devart 6.3到7.5之间的行为差异


提前感谢

在“getTotals”函数中执行ExecuteQuery方法时,将为当前DataContext对象(dc)打开一个用于获取数据的实体读取器。退出“getTotals”函数中的“using”块后,将释放DataContext对象(dc),并关闭其所有实体读取器。因此,当您试图读取foreach语句中的数据时,读取器已经关闭,异常发生(我们已经更改了异常的文本,现在它将提供更多信息)。 JIC:在旧版本中,关闭实体读取器可能会出现一些问题

...
var query = getTotals(grpId,bdgId);
foreach(BudgetTotals bt in query)
{
    ...
}