Ich habe eine Eins-zu-viele-Beziehung zwischen Dealer
, die viele Cars
haben kann.
Ich versuche, meinen C # -Code, der für EF verwendet wird, in F # umzuwandeln ... Das Problem ist nur, dass es in meinem F # -Code einen Händler bekommen kann, aber es ist nicht für diesen Händler ... es gibt nur null zurück , aber in der C # -Version funktioniert es?
Mein Code:
Die C # -Version
%Vor%... Program.cs, die nach Händler und seinen Autos fragen:
%Vor%Die F # -Version
%Vor%... Die Funktion ToLinq:
%Vor%... Und Program.fs, die den Händler und seine Autos bekommen:
%Vor%Jede Hilfe ist willkommen!
Ich denke, das Problem könnte mit Ihrer Funktion F # ToLinq
sein. Es sieht so aus, als ob Sie nur eine anonyme Funktion von F # in ein MethodCallExpression
umwandeln und der Ausdrucksbaum sich so verhält, als sollte er Ihre Funktion aufrufen. Das ist nicht dasselbe wie ein "realer" Ausdrucksbaum mit einem MemberAccessExpression
oder was auch immer es von der C # -Seite sein mag.
Ich denke, EF möchte den Ausdrucksbaum semantischer gestalten, damit er den tatsächlichen Eigenschaftenzugriff entdecken kann, anstatt einen einfachen "falschen" Methodenaufruf, den Sie hier machen.
Mein Rat wäre, Reflector auf den zwei kompilierten Assemblys zu öffnen und zu sehen, wo der Unterschied in den Expression-Bäumen liegt. Dann machen Sie den F # -Code den gleichen Typ von Ausdrucksbaum.
Haftungsausschluss: Ich bin nicht sehr versiert in F #, aber ich wäre gerne :). Das sieht cool aus!
Tags und Links c# entity-framework f# entity-framework-4.1 ef-code-first