实体框架 – 为什么“真实”和“浮动”映射到“单”而不是“双”?

前端之家收集整理的这篇文章主要介绍了实体框架 – 为什么“真实”和“浮动”映射到“单”而不是“双”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Model-First模式(= 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现在包含:

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)清楚地表示“真实”是一个8字节的IEEE浮点数,“浮点”只是“真实”的同义词 – 因此在每种情况下,“双”(8字节)应优先于“单”(4字节).

我做错事了还是我误会了什么?如果没有:出现什么问题,怎么解决

我应该为此创建错误报告吗?

看起来像映射驱动程序中的错误.

用于声明列的类型仅用于亲和性(您可以声明一个列为float,如果需要,则在其中存储blob).

在报告表结构时,sqlite仅返回用于创建其字段的sql定义(如果适用,则更改它们).

因此,您的驱动程序只能使用“float”作为字段类型,并且可能通过一些通用代码将其映射到“single”,这可能并没有写入sqlite(或者为了sqlite而被覆盖).

原文链接:https://www.f2er.com/sqlite/197741.html

猜你在找的Sqlite相关文章