假设我在WPF应用程序中有以下代码:
try { // NorthwindDataContext is LINQ DataContext created for SQL Server Northwind database Data.NorthwindDataContext data = new Data.NorthwindDataContext(connectionString); var orders = from order in Data.Orders select order; listView.DataContext = orders; } catch (SqlException ex) { MessageBox.Show(ex.Message); }
如果connectionString不正确,则此代码不会立即抛出SqlException。而不是这样,当WPF数据绑定开始枚举LINQ查询时,将抛出异常。应用程序因未处理的异常而崩溃。在这种情况下如何处理异常?
我知道全局异常处理是可能的,但我想要更精确的方法,它允许在执行特定函数时捕获特定异常。
答案 0 :(得分:1)
这是Linq 的诅咒,而不是数据绑定。
您的查询已编译但未运行 - 您绑定的查询不是结果。切换到以下代码:
var orders = from order in Data.Orders select order;
var realOrders = orders.ToList();
listView.DataContext = realOrders ;
基本上,您的存储库必须始终返回结果而不是原始查询。