2017-09-05 8 views
1

ASP.NETエンティティフレームワークを使用していますが、SqlQueryを作成しようとしていますが、このエラー:SQLとASP.NETマテリアライズド 'System.Int64'タイプから 'System.Int32'タイプへの指定されたキャストは無効です

The specified cast from a materialized 'System.Int64' type to the 'System.Int32' type is not valid.

私の問題は、どの列が私に問題を与えているのか、どのように修正するのか分かりません。ここに私のコードです。私はそれらが文字列であるので私がやっている私のキャストを考えていない。ここで

return View(db.Data.SqlQuery("SELECT ROW_NUMBER() OVER(ORDER BY slotOrder ASC) AS id, 
           concat(a.dateSlot, ' - ', a.timeSlot) as dateSlot, 
           concat(a.dateSlot, '-', a.timeSlot) as timeSlot, 
           COUNT(*) as slotOrder 
           FROM Appointments a 
           LEFT OUTER JOIN dateTimeSlots b 
           ON a.dateSlot = b.dateSlot AND a.timeSlot = b.timeSlot 
           GROUP BY a.dateSlot, a.timeSlot, b.slotOrder 
           ORDER BY b.slotOrder").ToList()); 

は私のクラスである:上記

public class dateTimeSlots 
{ 
    public int id { get; set; } 
    [DisplayName("Date")] 
    public string dateSlot { get; set; } 
    [DisplayName("Time")] 
    public string timeSlot { get; set; } 
    [DisplayName("Order")] 
    public int slotOrder { get; set; } 
} 
+0

それを格納しているモデルクラスは何ですか?それも追加してください。 'id'か' slotOrder'のどちらかがintではなくlongです。おそらく 'id' –

+0

私の質問にクラスを追加しました。 – user979331

答えて

2

あなたのクエリがInt64long)を返し、あなたはInt32int)として、それを格納しています。それがどの数値フィールドであるかを調べ、モデルを調整します。

私の推測によれば、idlongです。ROW_NUMBER()です。

0

ROW_NUMBER()はC#でInt64又はlongように変換れ、bigintMSDN)を返します。

関連する問題