winforms 具有固定名称“System.Data.SQLite.EF6”的ADO.Net提供程序未在计算机或应用程序配置文件中注册

inkz8wg9  于 2023-10-23  发布在  SQLite
关注(0)|答案(1)|浏览(226)

所以我一直在努力尝试解决这个问题一个星期左右了。当我尝试在另一台计算机上运行我的应用程序而不是我的开发机器时,我得到以下错误:
指定的架构无效。错误:RightyFramework.RemManagerDBModel.ssdl(2,79):错误0175:固定名称为“System.Data.SQLite.EF6”的ADO.Net提供程序未在计算机或应用程序配置文件中注册,或者无法加载。有关详细信息,请参见内部异常。
我尝试使用this方法检索内部异常,但没有用。我不知道为什么它似乎认为有一个内部例外,而事实上没有?
关于试图自己解决这个问题,我已经尝试了(我相信)在this SO问题下找到的所有相关的可能解决方案。
目前我的app.config看起来沿着下面所示的行。还包括创建的连接字符串的示例。应用程序使用Entity Framework 6从数据库第一配置。实体模型和关系图是从数据库文件中新生成的。我能够毫无问题地打开实体图,并且通过“运行自定义工具”选项重新生成它也没有任何区别。只有当我尝试在另一台计算机上运行已安装的应用程序时,才会出现此问题。在这种情况下,计算机是Windows 10的完全干净(出厂恢复)版本。
如果需要更多的信息,我可以在必要时添加。
App.config文件:

<?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" />
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="RemManager.Forms.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <connectionStrings>
    <!-- See Datasource.ConnectionController for the connection string builder.-->
  </connectionStrings>
  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6, Version=1.0.106.0, Culture=neutral" />
      <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6, Version=1.0.106.0, Culture=neutral" />
    </providers>
  </entityFramework>
  <system.web>
    <membership defaultProvider="ClientAuthenticationMembershipProvider">
      <providers>
        <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
      </providers>
    </membership>
    <roleManager defaultProvider="ClientRoleProvider" enabled="true">
      <providers>
        <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
      </providers>
    </roleManager>
  </system.web>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite.EF6" />
      <add name="SQLite Data Provider"
           invariant="System.Data.SQLite"
           description="Data Provider for SQLite"
           type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
      <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>
</configuration>

示例连接字符串:

metadata=res://*/EntityFramework.RemManagerDBModel.csdl|res://*/EntityFramework.RemManagerDBModel.ssdl|res://*/EntityFramework.RemManagerDBModel.msl;provider=System.Data.SQLite.EF6;provider connection string="data source=C:\Users\MacbookPro\AppData\Roaming\RemManager\Datasource\RemManagerDB.db;default timeout=5000;failifmissing=True;read only=False;version=3"
eivgtgni

eivgtgni1#

我在这里找到了修复方法:SQL DDEX for EF6,因为我已经安装了VS到一个新的笔记本电脑。
步骤:

  • 安装最新的SQLCEToolbox(这是一个.vsix插件,可以在VS IDE中打开SQLite DB)。按照安装程序提示,可能需要停止任务,需要点击“结束任务”继续安装
  • 在GAC中安装SQLite(注意:x86不是x64)每台机器一次。下载最新的sqlite-netFx46-setup-configure-x86-2015-1.0.xxx.0.exe(从https://system.data.sqlite.org/index.html/doc/trunk/www/downloads-unsup.wiki
  • 注意:对于VS 2022-使用x64安装包 *
  • 选择所有复选框:“完全安装”,将程序集安装到全局程序集缓存中并安装VS设计器组件
  • 重新启动VS

检查:在VS主菜单中:工具中,有一个新的SQLite/SQLServer紧凑工具箱入口。点击它,它将打开一个新的选项卡,解决方案资源管理器位于它附近。单击“关于”(问号图标),并检查GAC和DDEX提供程序是否为“是”

相关问题