Ich habe ein Problem mit NHibernate, für das ich keine Lösung finden kann. In meinem Projekt habe ich eine einfache Entität (Batch), aber wenn ich versuche und den folgenden Test durchführe, bekomme ich eine Ausnahme. Ich habe ein paar verschiedene Möglichkeiten gefunden, um eine ähnliche Abfrage durchzuführen, aber fast identische Ausnahme für alle (sie unterscheidet sich in der Ausführung der LINQ-Methode).
Der erste Test:
%Vor%Die Ausnahme:
%Vor%Der zweite Test:
%Vor%Die Ausnahme:
%Vor%Allerdings wird dieser übergeben (mit QueryOver & lt; & gt;):
%Vor%Verwenden des QueryOver & lt; & gt; API ist überhaupt nicht schlecht, aber ich bin nur ein bisschen verwirrt, dass die Abfrage & lt; & gt; API funktioniert nicht, was irgendwie traurig ist, da die Operation First () sehr prägnant ist und unsere Entwickler LINQ wirklich genießen.
Ich hoffe wirklich, dass es eine Lösung dafür gibt, da es merkwürdig erscheint, wenn diese Methoden einen so einfachen Test nicht bestehen.
BEARBEITEN
Ich benutze Oracle 11g, meine Mappings sind mit FluentNHibernate gemacht, registriert über Castle Windsor mit der NHibernate Facility. Wie ich geschrieben habe, ist die seltsame Sache, dass die Abfrage perfekt mit dem QueryOver & lt; & gt; API, aber nicht über LINQ.
Es gibt ein Problem mit der aktuellen Implementierung der LINQ-Erweiterungsmethoden für NHibernate 3.1.0.4000, die zusammen mit NHibernate Facility 2.0RC (und früheren Versionen) verwendet werden (siehe: Ссылка und Diskussion hier: Ссылка )
Der Fix, den ich momentan verwende, ist, die LINQ-Erweiterungsmethoden, die von NHibernate zur Verfügung gestellt werden, einfach zu ignorieren und selbst zu erstellen. Sie sind wirklich nur One-Liner:
%Vor% Wenn ich dann eine LINQ-Abfrage durchführen muss, verwende ich einfach session.Linq<EntityType>()
anstelle von session.Query<EntityType>
.
Ich hoffe, es hilft jemandem in der gleichen Situation wie ich.
Tags und Links oracle11g nhibernate castle-windsor linq-to-nhibernate windsor-nhfacility