我有这个存储过程,它映射在 Entity Framework 4.1 对象中。呼叫是在
using (TransactionScope transaction = new TransactionScope())
{
try
{
DbEntity.Car.AddObject(CarInfo);
DbEntity.SaveChanges();
/* Other object savings */
transaction.Complete();
DbEntity.AcceptAllChanges();
}
catch (Exception exp)
{
throw exp;
}
finally
{
DbEntity.Dispose();
}
}
我看到当前已完成存储过程映射。如果我在 MS SQL 服务器上单独执行存储过程,它会正确执行。
这是存储过程
ALTER PROCEDURE [dbo].[Carinsert] @Qty INT
,@StyleID INT
,@TFee MONEY
,@HWayTax MONEY
,@OFees MONEY
,@OFeesDescription NTEXT
,@MUp DECIMAL(18, 4)
,@BAss MONEY
,@PriceMSRP MONEY
,@PriceSpecial MONEY
AS
BEGIN
SET nocount ON
DECLARE @PTotal MONEY
DECLARE @TaxFeesNet MONEY
DECLARE @CarID INT
SET @TaxFeesNet = Isnull(@TFee, 0) + Isnull(@HWayTax, 0)
+ Isnull(@OFees, 0)
IF( @PriceSpecial IS NULL )
BEGIN
SET @PTotal = @PriceMSRP + @TaxFeesNet
END
ELSE
BEGIN
SET @PTotal = @PriceSpecial + @TaxFeesNet
END
INSERT INTO Car
(Qty
,StyleID
,MUp
,BAss
,PriceMSRP
,PriceSpecial
,TFee
,HWayTax
,OFees
,OFeesDescription
,PriceTotal)
VALUES (@Qty
,@StyleID
,@MUp
,@BAss
,@PriceMSRP
,@PriceSpecial
,@TFee
,@HWayTax
,@OFees
,@OFeesDescription
,@PTotal)
SELECT Scope_identity() AS CarID
END
如果我在 MS SQL 上执行此操作,它会将表中的 PriceTotal 列计算为 3444.00,这是正确的。
@Qty= 5,
@StyleID = 331410,
@TFee = NULL,
@HWayTax = NULL,
@OFees = NULL,
@OFeesDescription = NULL,
@MUp = 4,
@BAss = 10000,
@PriceMSRP = 20120,
@PriceSpecial = 3444
当我运行 MVC Web 应用程序时,我调试并看到这些是传递的值,PriceTotal 达到 20120.00
我无法弄清楚为什么它不进行 IF ELSE 计算并使用价格。
有没有人看到什么奇怪的东西?这已经令人生畏了好几天了。任何帮助表示赞赏。谢谢
更新 我更新了标题以更好地指导他人