因此,我们从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。
有没有人有任何见解如何解决这个功能?
我从来没有使用LINQPAd,所以这是一个黑暗中的镜头,但是有可能LinqPad使用Linq到sql而不是Linq到Entities? –
你使用自己的datacontext,还是LinqPad生成的? –
需要注意的一件事是,在每个存储库上调用“ToArray”意味着所有的连接都在客户端发生,而不是在SQL Server中。这会很慢,请记住你。 –