繁体   English   中英

存储过程:如何在EF和ASP.NET MVC中返回小数

[英]Stored procedure : how to return a decimal in EF and ASP.NET MVC

我创建了这样的存储过程:

SELECT 
    ISNULL(SUM(p.Amount), 0.00)
FROM 
    Payments p
LEFT JOIN 
    TenantTenancies tt ON tt.TenancyId = p.TenancyId
INNER JOIN 
    Tenant t ON t.Id = tt.TenantId
WHERE 
    t.UserId = @UserId 
    AND p.IsTenant = 1 
    AND p.Date < @StartDate

我希望它在ASP.NET MVC中执行的操作是返回一个decimal ,但是它一直返回一个INT ,如何使它返回一个decimal 是SQL还是ASP.NET MVC方面的问题?

我知道我可以使用标量decimal ,但是这将其转换为ObjectResult(Decimal)我只希望它返回decimaldecimal? 如果我单击返回一个NONE的集合,则默认情况下它是一个int但它可以在页面上正常工作而不会出现问题,仅是我希望它返回正确的值24.45。

我该如何实现?

那么,问题是:EF怎么会知道你只是返回一个 decimal 存储过程返回结果集 -可能是任意数量的行,任意数量的列。

这就是为什么要获取ObjectResult<decimal?> 如果知道这将只包含一个带有一个小数的行-那么只需使用.SingleOrDefault ,并且如果它返回非null的值,则得到结果:

ObjectResult<decimal?> results = ctx.GetDecimal();

if (result != null)
{
    decimal? theResult = result.SingleOrDefault();

    if(theResult != null)
    {
       decimal resultValue = theResult.Value;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM