¿Por qué tanto "real" como "flotante" se asignan a "Único" en lugar de "Doble"?
Estoy usando System.Data.SQLite 1.0.90 con VS2013 y EntityFramework 5 en el modo Modelo Primero (= EDMX).
Creé una nueva base de datos SQLite que contiene una tabla:
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), [..]
Las partes relevantes sonTest7float
yTest8real
.
Despues de haber ejecutadoActualizar modelo de base de datos ... el EDMX ahora contiene esto:
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" />
Las partes relevantes sonTest7float
yTest8real
.
<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" />
Las partes relevantes sonTest7float
yTest8real
.
Test7float
erróneamente se convirtió en "real" + "Single" - y el diseñador tampoco permite "Double" aquí.
Los documentos SQLite3 (http://www.sqlite.org/datatype3.html ) establezca claramente que "real" es un número de punto flotante IEEE de 8 bytes y "float" es solo un sinónimo de "real", por lo que en todos los casos se debe preferir "Doble" (8 bytes) a "Individual" (4 byte).
¿Estoy haciendo algo mal o malentendí algo? Si no, ¿dónde van las cosas mal y cómo puedo solucionarlas?
¿Debo crear un informe de error para esto?