【发布时间】:2012-06-24 13:15:44
【问题描述】:
我有这段代码可以检查数据库中的最后一个 customer_id。
ObjectResult<int?> last_customer_id_collection = MainForm.eggsContext.ExecuteStoreQuery<int?>("select MAX(customer_id) from customers");
然后我得到像这样需要的下一个 id
new_customer_id = last_customer_id_collection.FirstOrDefault<int?>().Value + 1;
它工作正常,但是在处理新的空数据库时,声明 last_customer_id_collection.FirstOrDefault<int?>() 会引发 InvalidOperationException。
如何在不尝试捕获的情况下检查 last_customer_id_collection 是否为空?
(p.s. 我试图检查 last_customer_id_collection.Any<int?>() 或 last_customer_id_collection.Count<int?>() 或 DefaultIfEmpty 等,但我尝试的一切都会导致此异常)
【问题讨论】:
-
异常信息是什么?
-
为什么要加入
<int?>?该集合实际上是int?或int类型还是其他类型?我怀疑这可能是您问题的根源。 -
您能发布 Stacktrace 和/或异常消息吗?所以我们可以确切地看到这里发生了什么。可能是您的数据库连接导致了
InvalidOperationException,因为对数据库的实际调用被推迟到您调用FirstOrDefault。
标签: c# collections ienumerable nullable executestorequery