Я использую System.Data.SQLite 1.0.90 с VS2013 и EntityFramework 5 в режиме Model-First (= EDMX).
Я создал новую базу данных SQLite, содержащую таблицу:
CREATE TABLE [..]
[Test1integer] integer,
[Test2int] int,
[Test3smallint] smallint,
[Test4tinyint] tinyint,
[Test5bigint] bigint,
[Test6money] money,
[Test7float] float,
[Test8real] real,
[Test9decimal] decimal,
[Test10numeric18_5] numeric(18,5), [..]
Соответствующими частями являются Test7float
и Test8real
.
После выполнения Обновить модель из базы данных... EDMX теперь содержит следующее:
SSDL:
<Property Name="Test1integer" Type="integer" />
<Property Name="Test2int" Type="int" />
<Property Name="Test3smallint" Type="smallint" />
<Property Name="Test4tinyint" Type="tinyint" />
<Property Name="Test5bigint" Type="integer" />
<Property Name="Test6money" Type="decimal" Precision="53" Scale="0" />
<Property Name="Test7float" Type="real" />
<Property Name="Test8real" Type="real" />
<Property Name="Test9decimal" Type="decimal" Precision="53" Scale="0" />
<Property Name="Test10numeric18_5" Type="decimal" Precision="18" Scale="5" />
Соответствующими частями являются Test7float
и Test8real
.
CSDL:
<Property Name="Test1integer" Type="Int64" />
<Property Name="Test2int" Type="Int32" />
<Property Name="Test3smallint" Type="Int16" />
<Property Name="Test4tinyint" Type="Byte" />
<Property Name="Test5bigint" Type="Int64" />
<Property Name="Test6money" Type="Decimal" Precision="53" Scale="0" />
<Property Name="Test7float" Type="Single" />
<Property Name="Test8real" Type="Single" />
<Property Name="Test9decimal" Type="Decimal" Precision="53" Scale="0" />
<Property Name="Test10numeric18_5" Type="Decimal" Precision="18" Scale="5" />
Соответствующими частями являются Test7float
и Test8real
.
Проблема
Test7float
ошибочно стал "настоящим" + "Одиночным" - и дизайнер также не позволяет здесь "Двойной".
В документах SQLite3 (http://www.sqlite.org/datatype3.html) четко указано, что "real" - это 8-байтовое число с плавающей запятой IEEE, а "float" - только синоним "real" - поэтому в каждом случае "Double" (8 байт) должен быть предпочтительнее "Single" (4 байт).
Я что-то делаю неправильно или что-то неправильно понял? Если нет: где дела идут не так и как я могу их исправить?
Должен ли я создать отчет об ошибке для этого?