Asp.net Web服务:十进制未正确传递到数据库

Asp.net Web服务:十进制未正确传递到数据库,asp.net,web-services,decimal,Asp.net,Web Services,Decimal,我有一个web服务,可以看到0.03的数据成员被传递到web服务,但该数据库仅显示0.000。数据库中的列定义为十进制(18,4)。业务类的数据成员定义为decimal。使用Visual Studio 2010、SQL Server 2008和.NET 4.0。为什么数据库列中没有显示0.03而不是0.000 int createApp; ShortSaleInvestorReviewServiceClient _service = new ShortSaleInvestorReviewSer

我有一个web服务,可以看到0.03的数据成员被传递到web服务,但该数据库仅显示0.000。数据库中的列定义为十进制(18,4)。业务类的数据成员定义为decimal。使用Visual Studio 2010、SQL Server 2008和.NET 4.0。为什么数据库列中没有显示0.03而不是0.000

int createApp;

ShortSaleInvestorReviewServiceClient _service = new ShortSaleInvestorReviewServiceClient();

decimal currentInterestRate = txtCurrentInterestRate.Text != string.Empty ? Decimal.Parse(txtCurrentInterestRate.Text) : new decimal();

createApp = _service.UpdateShortSaleApplication(currentInterestRate);

web服务通过LINQ调用存储过程来更新表




当我单步执行上述代码时,我可以看到“0.03”被传递到web服务,并被传递到LINQ to存储过程中。但数据库中的基础列显示“0.0000”。数据库中的列定义为十进制(18,4)。还有什么方法可以调试或修复?

您尚未在存储过程中设置十进制变量的精度和小数位数,这就产生了问题

ALTER PROCEDURE[dbo].[UpdateShortSaleApplication]
@iShortSaleApplicationID int,
@iCurrentInterestRate十进制,

默认情况下,sql server的精度为18,刻度为0

p(精度) 将存储的小数位数的最大总数,小数点的左侧和右侧。精度必须是从1到最大精度38之间的值默认精度为18。 s(比例尺)
将存储在小数点右侧的小数位数。该数字从p中减去,以确定小数点左侧的最大位数。小数点右侧可存储的最大小数位数。比例必须是从0到p的值。仅当指定了精度时,才能指定比例默认比例为0因此,0我们可以看到代码或示例吗?使用实体框架<代码>保存更改()?可能存在太多不同的问题。请发一些代码。
ALTER PROCEDURE [dbo].[UpdateShortSaleApplication]                 
@iShortSaleApplicationID int,   
@iCurrentInterestRate decimal,     

AS

UPDATE [ShortSaleApplications] SET [CurrentInterestRate] = @iCurrentInterestRate   

WHERE ShortSaleApplicationID = @iShortSaleApplicationID