我从上下文中获取客户,但是在Db中将金额保存为12.5时,我得到125。
奇怪的部分是通过使用:
return await Context.Payments.Where(p => p.Id == 82).FirstOrDefaultAsync();
我得到12.5
但是当我使用时:
await Context.Set<Customer>()
.Include(c => c.Illness)
.Include(d => d.WeightHistory)
.Include(e => e.ShowUps)
.Include(f => f.Programs)
.Include(g => g.Payments)
.ToListAsync();
付款金额为125。
知道为什么会这样吗?
付款模式中的金额属性:
public float Amount
{
get
{
return _Amount;
}
set
{
if (_Amount == value)
{
return;
}
_Amount = value;
RaisePropertyChanged();
}
}
答案 0 :(得分:0)
尽管对于您的问题我没有确切的答案,但我要说的是真正的问题是您使用float
作为“金额”,尤其是看起来像是金额的金额。已知Floats
在SQL
中存在精度问题,建议您将类型切换为decimal(19,2)
,然后应该会看到问题消失。