0

我已经非常密切地关注了这个关于如何将 SQLite 与 Visual Studio 2013 连接的精彩教程,但是当我进入教程的实体数据模型向导部分时,我看不到我的 SQLite 连接或 SQLite 提供程序,只有选项对于 SQL 服务器。

我非常密切地遵循教程,我什至尝试安装 SQL Server Compact/SQLite 工具箱,将项目编译为 x86,安装 Entity Framework Visual Studio 工具,但仍然没有任何反应。

我的 packages.config 看起来像:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="CommonServiceLocator" version="1.2" targetFramework="net45" />
  <package id="EntityFramework" version="6.1.2" targetFramework="net45" />
  <package id="NodaTime" version="1.3.0" targetFramework="net45" />
  <package id="Prism" version="5.0.0" targetFramework="net45" />
  <package id="Prism.Composition" version="5.0.0" targetFramework="net45" />
  <package id="Prism.Interactivity" version="5.0.0" targetFramework="net45" />
  <package id="Prism.Mvvm" version="1.0.0" targetFramework="net45" />
  <package id="Prism.PubSubEvents" version="1.0.0" targetFramework="net45" />
  <package id="System.Data.SQLite.Core" version="1.0.94.0" targetFramework="net45" />
  <package id="System.Data.SQLite.EF6" version="1.0.94.0" targetFramework="net45" />
</packages>

对此有何建议?


编辑1:

我有点转向 SQL Server CE 4.0,即使它已被弃用。我宁愿 SQLite 缺乏 4Gb 的限制,但我不能让它工作,我读过 EF 没有顺利集成在上面。

但是现在我遇到了一个新问题,SQL Server CE 4 和 MySQL 都会出现这种情况:

EF 6.1.2 错误

我讨厌因为这样的小事情而被困在一个项目中,有人知道如何解决这个问题吗?

4

4 回答 4

2

今天早上我遇到了这个确切的问题(我正在关注您在原始问题中引用的博客文章),我发现了这个问题,以及如何解决它:

  1. 卸载 SqlLite EF6 的 nuget 包
  2. 从 app.config 中删除 system.data 条目
  3. 安装nuget包
  4. 只将两个删除和一个添加到您的 app.config

    <DbProviderFactories>
      <remove invariant="System.Data.SQLite" />
      <remove invariant="System.Data.SQLite.EF6" />
      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
    

  5. 现在 SQLLite 将显示在 ADO.NET 实体数据模型连接区域

您可能需要将第二个“添加”添加回 system.data 以使其在运行时工作,因为我还没有做到这一点。

于 2015-02-23T20:10:03.297 回答
0

我的项目可以使用 SQL Server CE 4.0,但不能使用 SQLite。

我在同一个解决方案下有两个项目(一个用于程序本身,另一个作为测试项目),显然它们在某种程度上相互冲突。我从两个项目中的 nuget 等中删除了所有 EF 和 SQLCE4 引用,并且只将它们添加回我的程序项目,当它正常运行时,我将它添加到测试项目中。我能够让实体数据模型向导正常工作,显然一切都很好,但到目前为止我还没有进行任何 EF 操作。

我真的很忙于另一个项目,所以我没有太多时间来完全测试它,进行一些 CRUD 操作,甚至在 SQLite 上尝试它。我使用新的解决方案进行了快速测试,显然 SQLite 和 SQLSeverCE4 正在工作,当添加到控制台应用程序时,我添加了它们并生成了一个实体数据模型向导,正如教程指出的那样。但在我的项目中,目前我无法测试 SQLite 的时间限制。当我有更多时间时,我想给你们一个更完整的答案,但现在,我只能测试这些了。

于 2015-03-04T13:50:19.010 回答
0

您是否只在 GAC 中安装了 1.0.94 SQLite VS Tools?

于 2015-02-20T10:02:40.553 回答
0

我也遵循了教程,在评论中也检查了所有内容。我的系统(Visual Studio 2015、Entitiy Framework 6.1.3 和 sqlite 1.0.103 作为 nuget 包)缺少的是在“entityFramework / Providers”部分的 App.config 中添加以下行(我在标准之后添加了它: provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer")

<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />

之后,服务器资源管理器中已经包含的到 sqlite 的连接(这已经工作)是实体框架的标准连接。

于 2016-12-12T09:22:37.287 回答