我创建了一个这样的存储过程:
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)
我希望它能返回decimal
或decimal?
。如果我单击返回一个NONE的集合,它只是默认转到int
但它在页面上正常工作没有问题它只是我希望它返回正确的值24.45例如。
我怎样才能做到这一点?
答案 0 :(得分:1)
嗯,问题是: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;
}
}