Ich habe mit EF4/Stored Procedures/Complex Typen seit einer Weile gearbeitet, aber ich habe dieses Problem nicht zuvor gesehen.EF4 SPROC Complex Type Mapping - Problem mit ROW_NUMBER()
Ich habe eine gespeicherte proc, die eine Reihe von Feldern zurückgibt, eine Sammlung von komplexen Typen zugeordnet. War alles in Ordnung, bis ich dieses zusätzliche Feld eingeführt habe.
Es ROW_NUMBER
von T-SQL verwendet (in Ranking Ergebnisse verwendet):
SELECT ...
ROW_NUMBER() OVER (ORDER BY [Field1], [Field2]) AS [SearchRank],
...
FROM @ResultSet
In meinem komplexen Typ, ich habe diesen Satz als Nicht-Nullable-Int32, und ich bin auch POCO mit , so habe ich das als eine regelmäßige int
auf dem POCO.
Aber wenn ich die Abfrage versuchen und auszuführen, erhalte ich diese Fehlermeldung:
System.InvalidOperationException: The 'SearchRank' property on 'RankedLocationSearchResult' could not be set to a 'Int64' value. You must set this property to a non-null value of type 'Int32'.
ich es einfach nicht bekommen. Nirgendwo habe ich gesagt, dass diese Eigenschaft/dieses Feld Int64 ist. Und meine Eigenschaft ist ein Nicht-Null-Wert vom Typ 'Int32'.
Nun, bin ich sicher, das Problem ist mit ROW_NUMBER().
Weil, wenn ich das T-SQL zu nur 1 AS [SearchRank]
(fester Code, zum Testen) ändere, funktioniert es gut.
Es ist fast so wie EF sieht ROW_NUMBER()
als Rückkehr Int64.
Warum? Müssen wir das als eine 32-Bit-Ganzzahl oder etwas?
Wer hatte dieses Problem?