代码之家  ›  专栏  ›  技术社区  ›  Riva

带有VS2010、EF6和SQLite EF6提供程序的“Ado.Net实体数据模型”模板?

  •  0
  • Riva  · 技术社区  · 10 年前

    当我为未来项目指定XP兼容性时,我正在尝试测试VS 2010(WinXP SP3)、.Net 4.0.3(后来的WPF for UI)、Entity Framework 6(我发现它应该与.Net 4兼容)和SQLite(System.Data.SQLite/.EF6)的组合。

    我从NuGet安装了“EntityFramework”和“System.Data.SQLite EF6”包。 (“System.Data.SQLite EF6”依次安装了System.Data.SQL ite、System.Data.SQLite.EF6和SQLite.Interop.dll)

    现在尝试使用“Ado.Net实体数据模型”模板,我从以前的教程中猜测,这将是我进入新连接对话框的下一步,并且并没有列出SQLite提供程序可供选择。

    我检查了App.config和SQLite数据提供程序。(如果正确的话,我说不出来) 看起来像这样:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <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.0.3,Profile=Client" />
      </startup>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="v11.0" />
          </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>
      <system.data>
        <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" />
          <add name="SQLite Data Provider" 
               invariant="System.Data.SQLite" 
               description=".Net Framework Data Provider for SQLite" 
               type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
        </DbProviderFactories>
      </system.data>
    </configuration>
    

    该应用程序(空控制台应用程序)编译无错误并运行(当然什么也不做)。

    我对EF+SQLite很熟悉,所以你能给我建议吗?
    我是不是完全搞错了什么?

    1 回复  |  直到 10 年前
        1
  •  0
  •   Riva    10 年前

    因此,经过几个小时的拼命搜索,我在一个关于 Visual Studio Design Time Component(s) .
    显然,我缺少了GAC中安装的设计时组件和System.Data.SQLite库,如果没有这些组件,VS2010向导就无法“看到”SQLite提供程序。
    因此,尽管在许多官方网站上看到安装程序包 将SQLite-libs引入项目的推荐方法,实际上是 只有 使VS(2010,12,?13?)工具与之协同工作的方式。

    我安装了“ 设置 包“来自 http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 。在我的案例中,“32位Windows(.NET Framework 4.0)的设置”。
    模板现在提供SQLite作为数据提供程序。