Я использую EF4.0, чтобы сделать на мой взгляд очень простой запрос. Я подтвердил, что все ссылки на колонки в моих таблицах - Int (мы не используем bigint или smallint), поэтому я решил это. Я попытался изменить типы на Int64, которые затем жалуются на литье в Int32. Это приводит меня к мысли, что сценарий типа «проблема не является проблемой». О чем жалуется система EF?ROW_NUMBER() Обходной путь с использованием ошибки ExecuteStoreQuery Cryptic Result
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» не является допустимой.
Спасибо, что сделал трюк! – jjhayter