实体框架无法识别SQLite中的数据类型/列格式

时间:2013-12-05 06:40:12

标签: entity-framework sqlite

场景:

  • SQLite3数据库作为外部源
  • db
  • 中存在许多视图
  • 实体框架
  • edmx文件似乎无法识别视图中列的数据类型,即使在CAST
  • 时也是如此

示例:

In the SQLite db I have:

CREATE TABLE [dr] 
([ID] INTEGER PRIMARY KEY AUTOINCREMENT, 
[CoalNum] INT, 
[InputTime] DATE)

-------------   

CREATE VIEW "J13" AS 
SELECT 
dr.ID,
date(dr.InputTime) as InputTime,
CAST (count(*) AS INT) as CoalNum
FROM dr
WHERE dr.InputTime >= "2010-01-13"
GROUP BY dr.ID, date(dr.InputTime)

当我更新edmx模型时,VS2010可识别" dr.ID",但它无法识别" InputTime"和" CoalNum"。错误消息是"不支持datetype"。

在sqlite3管理工作室,我查看了这个视图(" J13"),我找到了" InputTime"和" CoalNum" datetype为null

cid      name          type        notnull      dflt_value      pk   
------- ------------ ---------- ----------- -------------- --- 
0        ID            INTEGER     0                            0    
1        InputTime                 0                            0    
2        CoalNum                   0                            0    

所以我无法更新Entity Framework中的数据模型。希望在我大喊大叫之前,有人可以提供帮助或提供更多信息。 一个人有同样的问题,但我不知道他是否解决了这个问题。 https://forum.openoffice.org/en/forum/viewtopic.php?t=27214

1 个答案:

答案 0 :(得分:0)

SQLite uses dynamic typing,因此计算列中没有数据类型。

实体框架假定所有列都具有已知类型;这与SQLite的架构不完全兼容。

您可以尝试一种解决方法:使用带有数据类型的假J13表创建数据库,更新模型,然后在实体框架未查找时将数据库文件替换为真实数据库。