我正在关注有关 Silverlight 和 Prism的教程,其中WCF RIA 服务用于通过ADO.NET Entity Data Model访问Northwind 数据库。
在 Northwind 数据库中,有一个表 Order_Details 通过外键连接到另外两个表(Orders 和 Products):
查询数据库的代码如下所示:
EntityQuery<Order_Detail> detailQuery = _MyDomainContext.GetOrder_DetailsQuery();
_MyDomainContext.Load(detailQuery.Where(
det => det.Order.Customer.CustomerID == cust.CustomerID).OrderByDescending(
det => det.Order.OrderDate).Take(10), OnDetailsLoaded, null);
然后在 OnDetailsLoaded 中:
var details = loadOp.Entities;
if (details != null)
{
var detailsList = details.ToList();
detailsList.ForEach(det => Orders.Add(
new OrderItem
{
ProductName = det.Product.ProductName,
Quantity = det.Quantity,
OrderDate = det.Order.OrderDate.Value
}));
这给了我一个空异常new OrderItem
,因为 Product 和 Order 都是空的。我已将 EntityDataModel 设置为“在模型中包含外键列”。代码与教程中的完全一样,我只需要重新创建 ADO.Net EntityDataModel 和 DomainService 即可使用我的本地数据库,因此错误可能就在那里。
我将如何调试此错误?我以前没有使用数据库的经验。我将 SQL Server 2012 与适用于 2012 的 Northwind 数据库一起使用,而本教程是使用 SQL Server 2008 RC 编写的。