Я думаю, что проблема не имеет ничего общего с EF или SQL Server.Даже в .NET вы не можете хранить значение 999 999 999 в формате с плавающей запятой:
float x = 999999999;
x будет иметь значение 1E + 9.Точность float
недостаточно высока для сохранения этого значения (только 7-значная мантисса).Свойство float
в классе сопоставляется со столбцом real
в SQL Server (который имеет ту же точность).
Единственное решение - использовать double
или decimal
в вашем классе (double сопоставляется с float
в SQL Server, который имеет точность 15 цифр).
Возможно, в SQL Server есть тип float
, который позволяет сохранить значение 999 999 999, а также float
в качестве типа свойстваваш класс, который, к сожалению, другой тип.Это сбивает с толку, да: float
в SQL Server соответствует double
в .NET ( НЕ ДО float
!)