2

私はEF4.0を使用して、非常に基本的なクエリを実行しています。テーブル内のすべての列参照がInt(bigintもsmallintも使用しない)であることを確認したので、それを除外しました。タイプをInt64に変更しようとしましたが、Int32へのキャストについて文句を言います。これは、「問題は問題ではない」タイプのシナリオであると私に信じさせます。EFシステムは何について不平を言っていますか?

public class clsResult
{
    public Int32 PkId { get; set; }
    public Int32 FkId { get; set; }
    public Int32 Threshold { get; set; }
}

var qry = db.ExecuteStoreQuery<clsResult>(@"SELECT PkId, FkId, Threshold
                                        FROM (SELECT ROW_NUMBER() OVER (PARTITION BY FkId ORDER BY PkId ASC) AS Threshold, *
                                              FROM ClientTrans
                                        ) AS T1
                                        WHERE (Threshold <= 3)
                                        AND (ClientID IN (  SELECT Id 
                                                            FROM ClientProfile
                                                            WHERE (p.Login LIKE 'WEBS%')))
                                        AND (DateRpt >= @STARTDATE)
                                        AND (DateRpt <= @ENDDATE)", SqlParams).ToList();

生成されたエラー:マテリアライズされた「System.Int64」タイプから「System.Int32」タイプへの指定されたキャストは無効です。

4

1 に答える 1

1

ドキュメントによると、の戻り値のタイプはrow_number()ですbigint

したがって、のタイプのみを変更する必要がありThresholdます。

于 2012-02-14T18:55:24.570 に答える