Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ/LinqPad:相同的查询不同的结果_Linq_Entity Framework_Linqpad_Outer Join - Fatal编程技术网

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

LINQ/LinqPad:相同的查询不同的结果,linq,entity-framework,linqpad,outer-join,Linq,Entity Framework,Linqpad,Outer Join,因此,我们将完全相同的查询从LinqPad复制并粘贴到EF 4.3应用程序中,指向完全相同的数据库并得到不同的结果。在LinqPad中,我们返回了2条记录。在我们的应用程序中,我们遇到一个错误“对象引用未设置为对象的实例” 在应用程序代码中,当我们删除外部联接(以添加部门)及其关联字段时,查询将返回与LinqPad中相同的2条记录asn 有人知道如何修复此功能吗?在LINQPad中,您实际上是在查询实体模型吗?如果你不是,看看。我刚开始的时候也遇到了类似的问题,没有意识到我之前已经设置了一个默认

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

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


有人知道如何修复此功能吗?

在LINQPad中,您实际上是在查询实体模型吗?如果你不是,看看。我刚开始的时候也遇到了类似的问题,没有意识到我之前已经设置了一个默认的LINQ到SQL连接,并且正在对此进行查询

单击linqpad中的“添加连接”,然后从程序集中选择datacontext,如

根据您的场景,您可以选择实体框架datacontext或实体框架BDContext和POCO。单击“下一步”并提供程序集的路径以及连接字符串,您就可以开始了。

我从未使用过LINQPAd,因此这是一个无稽之谈,但LINQPAd是否可能使用Linq to sql而不是Linq to Entities?您是否使用了自己的datacontext,或者LinqPad生成的连接?需要注意的是,在每个存储库上调用
ToArray
,意味着所有连接都发生在客户端,而不是SQL Server中。请注意,这将非常缓慢。
        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
                     };