如何在 SQLite 和 Visual Studio 2013 中使用 EF

Posted

技术标签:

【中文标题】如何在 SQLite 和 Visual Studio 2013 中使用 EF【英文标题】:How to use EF with SQLite and Visual Studio 2013 【发布时间】:2015-01-27 03:44:57 【问题描述】:

我想将 SQLite 与 Entity Framework 和 Visual Studio 2013 Desktop Express 一起使用。

为此,我右键单击参考并安装(带有选定的依赖项)“System.Data.SQLite(X86/x64)”(版本 1.0.94.1)NuGet 包

现在,如果我向我的项目添加一个新元素并选择 ADO.NET 实体数据模型,我看不到 SQLite 提供程序:我只有 Microsoft SQL Server。

我有 .NET Framework 4.5.1 和 Windows 7。

这是我的 App.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
 </configSections>
 <startup>
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
 </startup>
 <system.data>
   <!--
    NOTE: The extra "remove" element below is to prevent the design-time
          support components within EF6 from selecting the legacy ADO.NET
          provider for SQLite (i.e. the one without any EF6 support).  It
          appears to only consider the first ADO.NET provider in the list
          within the resulting "app.config" or "web.config" file.
-->
   <DbProviderFactories>
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
      <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" />
   </DbProviderFactories>
 </system.data>
 <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
       <parameters>
           <parameter value="mssqllocaldb" />
       </parameters>
    </defaultConnectionFactory>
    <providers>
        <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" />
    </providers>
 </entityFramework>
</configuration>

【问题讨论】:

在这里查看我的博文:erikej.blogspot.dk/2014/11/… 【参考方案1】:

我必须在 Entity Framework 的 Providers 部分添加这个:

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

如果您遵循 EricEJ 的教程,那么这应该适合您。

【讨论】:

【参考方案2】:

您必须从http://system.data.sqlite.org 安装 DDEX 提供程序 - 但 Express 版本不允许安装任何扩展程序,如 DDEX 提供程序。

您可以安装新的 Visual Studio 2013 社区。在那里,转到“工具”,“扩展和更新”,在搜索框中输入“sqlite ddex”,然后安装它。

【讨论】:

【参考方案3】:

虽然您已将 SQLite 的 nuget 包添加到您的项目中,但这与用于构建数据模型的 Visual Studio 工具完全不同。

您可以从 http://system.data.sqlite.org/ 安装 Visual Studio 的运行时支持 - 这应该允许您使用 Visual Studio 支持来创建您的模型。

【讨论】:

以上是关于如何在 SQLite 和 Visual Studio 2013 中使用 EF的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 2010问题修复

如何在 Visual Studio 2013 中为 sqlite 配置实体框架 6

如何在 Visual Basic 2010 中使用 sqlite db?

visual-studio-code 中的自动右括号不适用于 js 和 jsx 文件

使用 SQL/SQLite 工具箱 Visual Studio 2019 在 SQLite 数据库和 Xamarin.Android 项目之间建立连接

将 SQLite 与 Visual Studio 2008 和 Silverlight 一起使用