在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