2012-06-20 75 views
1

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

 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 
        }; 

在应用程序代码中,当我们删除了外连接(添加部门)及其关联领域的查询返回相同的2条记录LinqPad ASN。

有没有人有任何见解如何解决这个功能?

+1

我从来没有使用LINQPAd,所以这是一个黑暗中的镜头,但是有可能LinqPad使用Linq到sql而不是Linq到Entities? –

+0

你使用自己的datacontext,还是LinqPad生成的? –

+0

需要注意的一件事是,在每个存储库上调用“ToArray”意味着所有的连接都在客户端发生,而不是在SQL Server中。这会很慢,请记住你。 –

回答

3

点击汇编“添加连接”中linqpad和选择的DataContext像 enter image description here
您可以选择实体框架的DataContext或实体框架BDContext与POCO取决于您的方案。点击下一步,并提供与连接字符串一起的程序集路径,您将很高兴。

0

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

相关问题