第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將小于 0.1 的小數(shù)從 C# 傳遞到 SQL - SQL Profiler 解釋問題

將小于 0.1 的小數(shù)從 C# 傳遞到 SQL - SQL Profiler 解釋問題

C#
胡說叔叔 2023-09-16 17:32:24
當(dāng)我從 C#傳遞值時,我無法將小于0.1正確值的十進(jìn)制值從 C# 傳遞到 SQL,例如0.0033M我33在 SQL Profiler 中獲得的十進(jìn)制值db.Insert(0.0033M);//SP Called from EDMX context `db` C#當(dāng)我檢查SQL Profiler時,我得到exec [dbo].[Insert] @Value=33 --Shouldn't it be 0.0033但是當(dāng)我傳遞任何大于等于0.1該值的值時,都會正確傳遞如何將十進(jìn)制值從 C# 正確傳遞到存儲過程的十進(jìn)制值?這是我們的 SP,沒關(guān)系,只是為了讓事情更清楚,實際值是我們在前面提到的 Profiler 中收到的值CREATE PROCEDURE [dbo].[Insert]   @Value[decimal](18, 6) NULLAS            BEGIN                    Select @Value  -- this would give `33` when passed `0.0033M` From C#      END修改:我非常感謝Microsoft 的 David Browne的回答。正如他所說,這沒有問題,傳遞價值也沒有問題。但在我們進(jìn)一步的調(diào)查中,我們確實發(fā)現(xiàn)SQL Profiler解釋錯誤,而 SQL 和 C# 工作得很好。在這里我要提到的是,我們使用 ADO.net 和 Entity Framework 進(jìn)行了測試,發(fā)現(xiàn)問題出在 SQL Profiler 的解釋上,即當(dāng)小于0.1通過時 SQL Profiler 顯示值錯誤,它顯示 0.01為1和0.077as77。我非常感謝每一位參與的人,但我也想在這里提到這一點,這是一種異常行為,SQL Profiler 沒有提供預(yù)期的結(jié)果,因為對于許多調(diào)試場景,我們使用 SQL Profiler。
查看完整描述

1 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗 獲得超2個贊

什么版本的EF?我無法使用簡單的基于 EF6 EDMX 的數(shù)據(jù)庫優(yōu)先模型來重現(xiàn)這一點。


添加了這個過程:


CREATE PROCEDURE [dbo].[Insert]  

 @Value[decimal](18, 6) NULL

AS            

BEGIN            

        Select @Value  -- this would give `33` when passed `0.0033M` From C#      

END

添加了數(shù)據(jù)庫優(yōu)先模型,生成


public virtual ObjectResult<Nullable<decimal>> Insert(Nullable<decimal> value)

{

    var valueParameter = value.HasValue ?

        new ObjectParameter("Value", value) :

        new ObjectParameter("Value", typeof(decimal));


    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Nullable<decimal>>("Insert", valueParameter);

}

并跑:


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace ConsoleApp24

{

    class Program

    {

        static void Main(string[] args)

        {

            using (var db = new aEntities())

            {

                var result = db.Insert(0.0033M);

                Console.WriteLine(result.First().Value);

                Console.ReadKey();

            }

        }

    }

}

輸出是


0.003300


查看完整回答
反對 回復(fù) 2023-09-16
  • 1 回答
  • 0 關(guān)注
  • 111 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號