私はEF4/Stored Procedures/Complex Typesをしばらくは使用していましたが、この問題は以前は見たことがありません。EF4 SPROC複合型マッピング - ROW_NUMBER()の問題
私は複雑な型のコレクションにマップされた一連のフィールドを返すストアドプロシージャを持っています。私はこの余分なフィールドを導入するまで、すべてうまくいきました。
それは(順位結果に使用される)T-SQLからROW_NUMBER
を使用しています:私の複合型で
SELECT ...
ROW_NUMBER() OVER (ORDER BY [Field1], [Field2]) AS [SearchRank],
...
FROM @ResultSet
を、私は非null許容のInt32としてこのセットを持っている、と私はまた、POCOのを使用しています、私はこれを普通のint
としてPOCOに持っています。
しかし、私は試してみて、クエリを実行すると、私はこのエラーを取得:
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'.
私はそれを得ることはありません。どこにも私はこのプロパティ/フィールドがInt64だと言っています。そして、私のプロパティーはで、タイプ 'Int32'以外の値ではありません。
今、私は問題がROW_NUMBER()であると確信しています。
T-SQLをちょうど1 AS [SearchRank]
(ハードコード、テスト用)に変更すると、正常に動作するためです。
EFは、Int64を返すとしてROW_NUMBER()
とほぼ同じです。
なぜですか?これを32ビットの整数などにキャストする必要がありますか?
誰でもこの問題がありましたか?