在Windows 2008 R2服务器上部署时,我的应用程序出现非常奇怪的问题。框架4上的实体框架5,包含和多个具有相同表格的外部联接
鉴于这种非常简单的LINQ片段:
return From
invoice In Me.Invoices
Where
loggedCustomerID.Contains(invoice.Contract.CustomerID)
Order By
invoice.Date Descending
应用程序的工作,但在一些箱子(客户服务器上),生成的T-SQL是很奇怪:
SELECT
[Extent1].[ContractID] AS [ContractID], ...
FROM
[dbo].[Invoice] AS [Extent1]
INNER JOIN [dbo].[Contract] AS [Extent2] ON
[Extent1].[ContractID] = [Extent2].[ContractID]
LEFT OUTER JOIN [dbo].[Contract] AS [Extent3] ON
[Extent1].[ContractID] = [Extent3].[ContractID]
WHERE
[Extent2].[CustomerID] = 482283
OR [Extent3].[CustomerID] IN (498565,482282,498564,498566)
- 表被连接多次(?)
IN
语句被分成多个ËT-SQL的条件,而不是一个单一的IN
声明
显然同包运行我的系统中生成的正确查询精细无多次连接同一个表并创建只有一个IN
声明。
我使用EF 5.0,但与Framework 4.0兼容(所以程序集显示版本4.4)。这是这个问题的根源吗?
这里有什么问题?
看起来行为与此有关? Too Many Left Outer Joins in Entity Framework 4?
嗨马丁,谢谢你的回答!我将尝试删除延迟加载选项并查看会发生什么,但是在我的机器上(.NET Framework 4.5 vs 4.0?)都运行正常,它在2003 R2 Box以及2008上R2的盒子,我有这种奇怪的行为...我将尝试升级到2008年的盒子上的.NET 4.5,因为在2003年不支持,并回来一些反馈! – adrianot75