LINQ / LinqPad:同样查询不同的结果

时间:2012-06-20 00:55:12

标签: linq entity-framework linqpad outer-join

因此,我们将完全相同的查询从LinqPad复制并粘贴到我们的EF 4.3应用程序中,指向完全相同的数据库并获得不同的结果。在LinqPad中我们得到了2条记录。在我们的应用程序中,我们提出错误“对象引用未设置为对象的实例。”

        var Shippings = shippingRepository.All.ToArray();
        var SalesOrderHeaders = salesOrderHeaderRepository.All.ToArray();
        var Customers = customerRepository.All.ToArray();
        var Stores = storeRepository.All.ToArray();
        var Departments = departmentRepository.All.ToArray();

        var toShip = from sh in Shippings
                     join h in SalesOrderHeaders on sh.OrderId equals h.SalesOrderHeaderId
                     join c in Customers on h.CustomerId equals c.CustomerId
                     join st in Stores on h.StoreId equals st.StoreId
                     join d in Departments on h.DepartmentId equals d.DepartmentId into outer
                     from o in outer.DefaultIfEmpty()
                     select new 
                     {
                        OrderId = sh.OrderId,
                        CustomerName = c.Name,
                        StoreName = st.Name,
                        DepartmentName = (o.Name == null) ? o.Name : "None",
                        DeliveryDate = h.DeliveryDateTime
                     };

在应用程序代码中,当我们删除外连接(添加Departments)及其关联字段时,查询返回与LinqPad中相同的2条记录。

有没有人对如何修复此功能有任何见解?

2 个答案:

答案 0 :(得分:3)

单击linqpad中的“添加连接”,然后从程序集中选择datacontext enter image description here
您可以根据您的方案选择具有POCO的Entity Framework datacontext或Entity Framework BDContext。单击next并提供程序集的路径以及连接字符串,您将很高兴。

答案 1 :(得分:0)

在LINQPad中你实际上是在查询你的实体模型吗?如果您不是,请查看this link。我在开始时遇到了类似的问题,并且没有意识到我之前已经设置了默认的LINQ to SQL连接并且正在查询它。