2012-01-12 91 views
3

我有一张表,其中包含一个名为Days1的定义字段decimal(5,2)此表映射到edmx文件中,并且有一个将值插入此表的过程。使用实体框架对十进制数进行缩放

每当我试着用我的代码

x.Days1 = 7.5; 

我得到以下错误插入值7.5:

​​

如果我没有错误发生相同的值执行该过程。 如果我把价值7.51我的代码:

x.Days1 = 7.51 

出现任何错误。我认为问题出在点之后的数字。我有值7.5〜我怎么可以把它作为7.50

存储过程是什么:

ALTER PROCEDURE [dbo].[proc_EmployeeBalanceInsert] 
(
    @EmployeeBalanceID char(36), 
    @EmployeeID char(36), 
    @LeaveRegulationID char(36), 
    @AttendanceTypeID char(36), 
    @BalanceOpenDate datetime, 
    @DateFrom datetime, 
    @DateTo datetime, 
    @BalanceUpToDate datetime = NULL, 
    @ValidUntilDate datetime, 
    @LeaveTransactionTypeID char(1) , 
    @TransactionSign int = NULL, 
    @Days1 decimal(5,2) = NULL, 
    @Days2 decimal(5,2) = NULL, 
    @Days3 decimal(5,2) = NULL, 
    @Days4 decimal(5,2) = NULL, 
    @Days5 decimal(5,2) = NULL, 
    @System int = NULL, 
    @CreationDate datetime = NULL, 
    @BatchID char(36) = NULL 
) 
AS 
BEGIN 
    SET NUMERIC_ROUNDABORT on 

    SET NOCOUNT OFF 
    DECLARE @Err int 

    INSERT 
    INTO [EmployeeBalance] 
    (
     [EmployeeBalanceID], [EmployeeID], [LeaveRegulationID], 
     [AttendanceTypeID], [BalanceOpenDate], [DateFrom], 
     [DateTo], [BalanceUpToDate], [ValidUntilDate], 
     [LeaveTransactionTypeID], [TransactionSign], [Days1], 
     [Days2], [Days3], [Days4], 
     [Days5], [System], [CreationDate], 
     [BatchID] 
    ) 
    VALUES 
    (
     @EmployeeBalanceID, @EmployeeID, @LeaveRegulationID, 
     @AttendanceTypeID, @BalanceOpenDate, @DateFrom, 
     @DateTo, @BalanceUpToDate, @ValidUntilDate, 
     @LeaveTransactionTypeID, @TransactionSign, @Days1, 
     @Days2, @Days3, @Days4, 
     @Days5, @System, @CreationDate, 
     @BatchID 
    ) 

    SET @Err = @@Error 

    RETURN @Err 
END 
+0

你选择了你的EDMX您Days1财产什么类型的? – ken2k 2012-01-12 10:40:27

+0

它的十进制映射是正确的我做了下面的代码,它的工作,但它的东西不合逻辑:balance.Days1 = Convert.ToDecimal(balance.Days1.ToString(“n2”)); – Mazen313 2012-01-12 10:52:25

回答

3

我通过保存数据之前添加以下代码解决了我的问题:

x.Days1 = Convert.ToDecimal(x.Days1.ToString("n2")); 
1

试试你的变量设置为“真”十进制值:

x.Days1 = 7.5m; // Notice the "m" appended to the value 
+0

这个7.5是一个计算值,我把它作为一个常数来作为例子 – Mazen313 2012-01-12 19:02:32

相关问题