EF6以int形式浮动

时间:2019-05-06 15:26:53

标签: c# linq entity-framework-6

我从上下文中获取客户,但是在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();
        }
    }

Payment struct

db value

enter image description here

1 个答案:

答案 0 :(得分:0)

尽管对于您的问题我没有确切的答案,但我要说的是真正的问题是您使用float作为“金额”,尤其是看起来像是金额的金额。已知FloatsSQL中存在精度问题,建议您将类型切换为decimal(19,2),然后应该会看到问题消失。