WPF数据绑定中的异常处理

时间:2010-12-02 13:56:13

标签: wpf linq-to-sql exception-handling

假设我在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查询时,将抛出异常。应用程序因未处理的异常而崩溃。在这种情况下如何处理异常?

我知道全局异常处理是可能的,但我想要更精确的方法,它允许在执行特定函数时捕获特定异常。

1 个答案:

答案 0 :(得分:1)

这是Linq 的诅咒,而不是数据绑定。

您的查询已编译但未运行 - 您绑定的查询不是结果。切换到以下代码:

var orders = from order in Data.Orders select order;
var realOrders = orders.ToList();
listView.DataContext = realOrders ;

基本上,您的存储库必须始终返回结果而不是原始查询。