Entity Framework изменяет значения, которые я передаю для сохранения в DB (oracle).
В Oracle у меня есть таблица с полем PointX
as Float и Mapped to EF как Decimal.
Когда я запускаю код, Entity для сохранения имеет свойство PointX
со значением 37
и сохраняет 40
в DB.
Примеры проверенных мной значений
Сущность. PointX
→ Oracle. PointX
37
→ 40
6543210
→ 6000000
41
→ 40
35
→ 40
В блоке кода, который я вставляю здесь, я проверил значения domainObject и всегда в порядке.
После выполнения SaveChanges
я проверяю значение в Oracle, и новое значение полностью неверно.
public virtual void Save(T domainObject)
{
// domainObject.PointX = 37;
db.SaveChanges();
}
Я не могу найти, почему он сохраняет ценности таким образом. Я потерялся.
Проверьте точность оракула поплавкового типа. В моем случае 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" />