Ich arbeite gerade an dem Versuch, unser Unternehmensframework von EF6 in EF Core umzuwandeln. Ich bin in einen Block gerannt. Ein EF "Stored Procedure", die gerade fein auf EF6 arbeitet nun an diesem Code-Block in EF Core-Fehler:LINQ zu Entitäten, die in .NET Core eine Ausnahme verursachen, "Wert kann nicht null sein"
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();
Der Versuch, diese Codezeile ergibt folgende Ausnahmemeldung auszuführen:
Value cannot be null. Parameter name: left
In unserer .NET Core-Lösung funktioniert dieser Code DOES, wenn der Eingabeparameter toolbarId
auf -1 festgelegt ist. Meine Vermutung ist, dass das Problem irgendwo auf der anderen Seite der OR-Klausel liegt. Und da stecke ich fest. Ich habe mich gefragt, ob jemand dieses Problem schon einmal gesehen hat und weiß, wie man es beheben kann? Oder wie unterscheidet sich EF Core von EF6? Ich habe mehrere verschiedene Fixes ausprobiert und an mehreren Stellen nach einer Lösung gesucht und bin leer ausgegangen.
Sind entweder MENU_MenuFolders oder MENU_MenuToolbar_MenuFolders null, wenn toolbarId! = -1? –
Nein, toolbarId == -1 ist unser Standardfall. Jeder positive Wert für toolbarId sollte die sozusagen zurückgegebenen Datensätze "abschneiden". Ich habe versucht, die gleiche Abfrage in LINQPad 4 ausführen und habe keine Probleme dort .... –
Was war die EF-Version im Arbeitsszenario (was nennen Sie .NET 4.5) - EF6 oder EF Core? Mit anderen Worten, ändern Sie tatsächlich die EF? –