存储过程:如何在EF和ASP中返回小数.净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;
    }
}

最新更新