我最近升級到devart 7.5並且一些功能無法正常工作。具體而言,我有一個返回一個IEnumerable的函數:devart dc.ExecuteQuery返回對象未設置爲對象的實例
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;
}
}
爲了這一點上,一切工作正常,返回變量「query
」擁有正確的價值觀。
問題是,調用getTotals
當對象未設置:
...
var query = getTotals(grpId,bdgId);
foreach(BudgetTotals bt in query)
{
...
}
現在,當「在」控制到達在foreach指令異常與消息"Object not set to an instance of an object"
,這是我百思不得其解,因爲
a)其工作正常和
b)該對象是的getTotals
funcion內。
我可以通過將返回值從IEnumerable
更改爲BudgetTotals[]
並返回query.ToArray
來解決問題。我試了一下,它的工作原理。這裏的主要問題是返回IEnumerable的所有其他函數。
在檢修應用程序之前,我想了解爲什麼或什麼導致了devart 6.3到7.5之間的這種行爲差異。
預先感謝