none
Entity Framework 6 呼叫預存程序,output 參數 decimal 型別,回傳時沒有小數位的值 RRS feed

  • 問題

  • 在 Entity Framework 6 呼叫預存程序,

    設定其一 output 參數 decimal 型別,

    SQL Server 端回傳 numeric(8,2) 值是 1234.56

    回傳到 Entity Framework 後只得到 1234

    透過 SQL Profile 觀察執行時該參數型別定義為 decimal (29,0)

    試著將該參數設定值如 1000.00m, 結果回傳正確為 1234.56

    以 SQL Profile 觀察執行時參數型別定義為 decimal(6,2)

    看來 Entity Framework 是依輸入值去調整型別(含小數位)

    除了指定初始值外,有其他更好的方法 ?


    • 已編輯 robinliks 2014年7月18日 下午 10:30
    2014年7月18日 下午 10:29

解答

  • 看起來好像沒有特別的方法,EF 使用 ObjectParameter 來推斷預存程序要使用的 type,若沒有給預設值的話它會無法推斷出正確的位數。

    ObjectParameter 又沒有足夠的輸入資訊,使得必須以預設值給定的方法來給 EF 充份的資訊...


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已提議為解答 KKBruceMVP 2014年7月20日 上午 08:31
    • 已標示為解答 robinliks 2014年7月20日 上午 10:48
    2014年7月19日 上午 12:44
    版主