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 回答