我创建了一个这样的存储过程:
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,例如。
那么,问题是: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;
}
}