2

我使用EF4.0在我的脑海中做了一个非常基本的查询。我已经确认我的表中的所有列引用都是Int(我们不使用bigint和smallint),所以我排除了这一点。我曾尝试将类型更改为Int64,然后它将投诉转换为Int32。这使我相信“​​问题不是问题”类型的情况。什么是EF系统抱怨?ROW_NUMBER()使用ExecuteStoreQuery隐藏结果错误的解决方法

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”类型无效。

回答

1

根据documentation,返回类型row_number()bigint

因此,您应该只更改Threshold的类型。

+0

谢谢你,那个伎俩! – jjhayter 2012-02-14 19:01:42

相关问题