我目前正在努力將我們的公司框架從EF6轉換爲與EF Core兼容。我遇到了一塊障礙。這只是正常的EF6的EF「存儲過程」現在沒有在EF核心的代碼塊上:LINQ to Entities在.NET Core中導致異常「Value can not be null」
var allFolderAncestors = (from f in context.MENU_MenuFolders
from mtf in context.MENU_MenuToolbar_MenuFolders
.Where(x => x.MenuFolderId == f.Id
|| x.MenuFolderId == f.ParentFolderId)
.DefaultIfEmpty()
where (toolbarId == -1
|| (mtf == null
? false
: mtf.MenuToolbarId == toolbarId)
)
&& f.Id != 0
select new
{
AncestorFolderId = f.Id,
AncestorParentFolderId = f.ParentFolderId,
Id = f.Id,
ParentFolderId = f.ParentFolderId
}).ToList();
試圖執行這行代碼導致以下異常消息:
Value cannot be null. Parameter name: left
在我們的.NET Core解決方案中,當輸入參數toolbarId
設置爲-1時,此代碼DOES工作。所以我的猜測是問題出在OR子句的另一端。這就是我卡住的地方。我想知道是否有人曾經見過這個問題,並知道如何解決它?或者EF Core與EF6有何不同?我嘗試了幾種不同的修復方法,並在幾個地方尋找解決方案,並且已經空了。
當toolbarId!= -1時,MENU_MenuFolders或MENU_MenuToolbar_MenuFolders爲null嗎? –
不,toolbarId == -1是我們的默認情況,toolbarId的任何正值應該「減少」可以說回來的記錄。我已經嘗試在LINQPad 4中運行相同的查詢,並且在那裏沒有問題.... –
在工作場景(稱爲.NET 4.5)中使用的EF版本是什麼 - EF6或EF Core?換句話說,你是否真的改變了EF? –