Entity Framework округляет целочисленные значения или маскирует их

1

Entity Framework изменяет значения, которые я передаю для сохранения в DB (oracle).
В Oracle у меня есть таблица с полем PointX as Float и Mapped to EF как Decimal.
Когда я запускаю код, Entity для сохранения имеет свойство PointX со значением 37 и сохраняет 40 в DB.
Примеры проверенных мной значений

Сущность. PointX → Oracle. PointX
3740
65432106000000
4140
3540

В блоке кода, который я вставляю здесь, я проверил значения domainObject и всегда в порядке.
После выполнения SaveChanges я проверяю значение в Oracle, и новое значение полностью неверно.

public virtual void Save(T domainObject)
{
    // domainObject.PointX = 37;    
    db.SaveChanges();
}

Я не могу найти, почему он сохраняет ценности таким образом. Я потерялся.

  • 2
    Можем ли мы увидеть определение вашей таблицы, особенно столбец PointX?
  • 0
    Да ... Я могу делать обновления непосредственно в таблице с помощью жабы и возвращать их с EF без каких-либо проблем. Только когда я сохраняю изменение номера.
Показать ещё 4 комментария
Теги:
entity-framework

1 ответ

1
Лучший ответ

Проверьте точность оракула поплавкового типа. В моем случае 126 (Oracle 10).
Отредактируйте edmx с помощью текстового редактора и проверьте поля типа float. Если в атрибутах нет точности, просто установите ту же точность, что и на вашей версии оракула, таким образом:

edmx с проблемой:

<EntityType Name="MyTableEntity">
    <...>
    <Property Name="PointX" Type="float" Nullable="false" />

Измените точность установки поля объекта:

<EntityType Name="MyTableEntity">
    <...>
    <Property Name="PointX" Type="float" Nullable="false" Precision="126" />
  • 0
    Большое спасибо. Это решило проблему. Я не понимаю, почему этот атрибут не был установлен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню