EF6 получает плавающий как int - PullRequest
1 голос
/ 06 мая 2019

Я получаю клиентов из контекста, но при сохранении суммы как 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 голосов
/ 06 мая 2019

Хотя у меня нет точного ответа на вашу проблему, я бы сказал, что настоящая проблема в том, что вы используете float для «Суммы», особенно то, что кажется денежной суммой. Известно, что Floats имеет проблемы с точностью в SQL, я рекомендую переключить тип на decimal(19,2), и вы должны увидеть, что ваша проблема исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...