【问题标题】:SQLite and Entity FrameworkSQLite 和实体框架
【发布时间】:2013-04-13 16:49:37
【问题描述】:

我正在尝试将 SQLITE 数据库与最新的实体框架一起使用。我已经从这里为 .NET Framework 4.0 安装了 SQLite 提供程序 x86:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

我通过在 Visual Studio 2012 中使用服务器资源管理器成功地将 SQLITE 添加为新数据源。然后,我添加了新的 ADO.NET 实体模型并尝试从我的简单 sqlite 数据库中添加表。由于某种原因,无法添加这些表,并且错误日志显示如下:

目标 .NET Framework 版本当前不支持数据类型“longchar”; >> 表 'main.Person' 中的列 'Name' 被排除在外。

我不明白为什么它试图将 SQLite TEXT 类型转换为 longchar 并失败。谁能帮我解决这个问题?

【问题讨论】:

  • SQLite数据库中字段的类型是longchar?为什么不使用 varchar 或 nvarchar 而不是 long char?
  • SQLite 实际上是无类型的,因为类型是作为字符串处理的。提供者的工作是确定它应该使用什么类型。出于某种原因,在我的情况下,提供者希望将我的 TEXT 类型作为 longchar 来处理,这就是问题所在。

标签: .net sqlite frameworks entity provider


【解决方案1】:

在为一个在工作中使用 SQLLITE 和 ADO 的项目设置开发环境后,我今天才遇到这个问题,而且修复很简单。版本 1.0.85.0 已损坏,版本 1.0.84.0 有效。

32 位: http://system.data.sqlite.org/downloads/1.0.84.0/sqlite-netFx40-setup-bundle-x86-2010-1.0.84.0.exe

64 位: http://system.data.sqlite.org/downloads/1.0.84.0/sqlite-netFx40-setup-bundle-x86-2010-1.0.84.0.exe

卸载确保删除每次安装的程序文件,并在重新安装时告诉安装程序重建 GAC。如果这是我和我的 boses 构建机器之间的唯一区别,那么该网站需要更好地列出以前的修订版本。

【讨论】:

  • 如果我是对的,该版本的 SQLite 只能与 Visual Studio 2010 一起使用。我使用的是 2012,所以这对我没有帮助。无论如何,谢谢。
  • 您可以在system.data.sqlite.org/downloads/1.0.84.0/…获取 Visual Studio 2012 的 1.0.84.0 版本
  • 虽然看起来很奇怪,但在项目开始使用 VS 2010 并安装版本 1.0.85.0 之后,我在 VS 2012 上也遇到了 Sqlite 问题。我按照 user2333398 和 @Chris-Woodruff 的说明安装了 1.0.84.0 版, 一切都神奇地开始工作了!谢谢各位!
  • 谢谢;这也对我有用。感谢@ChrisWoodruff 的链接。
【解决方案2】:

更改您的 SQLite 表,使任何 TEXT 字段改为 NVARCHAR(max)。 .Net 应该正确映射它们。

【讨论】:

    猜你喜欢
    • 2014-07-28
    • 2010-10-30
    • 2013-12-26
    • 2021-12-14
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2015-04-05
    • 2015-11-26
    相关资源
    最近更新 更多