我在模型优先模式(= EDMX)中使用System.Data.SQLite 1.0.90与VS2013和EntityFramework 5。
我创建了一个包含表格的新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现在包含:
<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
。
<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字节)应优先于“单一”(4字节)。
我做错了什么或者我误解了什么?如果不是:哪里出了问题,我该如何解决?
我应该为此创建错误报告吗?
答案 0 :(得分:1)
看起来像是映射驱动程序中的错误。
用于声明列的类型仅用于关联(如果需要,可以将列声明为float并在其中存储blob)。
报告表结构时,SQLite只返回用于创建其字段的SQL定义(如果适用,则更改它们)。
因此,您的司机只能访问&#34; float&#34;对于字段类型,可能将其映射到&#34;单个&#34;通过一些通用代码,可能没有用SQLite编写(或者无论如何都被SQLite覆盖)。
答案 1 :(得分:0)
真正的sqlite数据类型实际上是一个float(http://www.sqlite.org/datatype3.html),对应的.Net框架类型是Single(http://msdn.microsoft.com/en-us/library/b1e65aza.aspx)