2014-01-10 69 views
2

我用我的應用程序這個LINQ表達式這是使用實體框架5簡化LINQ表達式

var managers = 
    UnitOfWork.UserRepository.Get(
     u => userAccounts.All(ua => u.Permissions.Any(uap => 
     ((uap.AccountId == ua || uap.PermissionId == 1) && uap.Config == "SET"))) 
     && (user.IsGenericUser || u.StageId== user.StageId)); 

這裏useraccountsList<int>對象。

但這是拋出異常

你的SQL語句的某些部分嵌套太深。重寫查詢或將其分解爲更小的查詢。

如何簡化此表達式以避免出現此類錯誤。

回答

0

您可以編寫SQL過程/視圖來完成此操作。英孚鼓勵這種策略,但(IMO)通常性能較差。過程/視圖然後可以通過你的上下文來執行。

0
+0

像我 – Gab

+0

我還沒有使用的所有()方法,該解決方案將不與查詢工作,但也許這是問題的一部分。而不是做所有(條件),你可能做一個任何(!條件),而不是有相同的邏輯結果? – DLeh