You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2017中EF6+SQLite刷新EDMX模型时无法识别SQLiteFactory提供程序

解决EF6 + SQLite刷新EDMX时的“无法确定提供程序名称”异常

我帮你分析了App.config里的问题,主要是EF provider配置的映射错误导致的,下面是具体的修复步骤:

  • 修正Entity Framework Providers配置
    你原来的<entityFramework>节点下的providers里,System.Data.SQLite的type指向了EF6的SQLiteProviderServices,这是错误的——这个invariant应该对应SQLite的基础驱动,而EF6的集成只需要System.Data.SQLite.EF6这个provider。移除多余的System.Data.SQLite条目,修改后的<providers>部分如下:

    <providers>
      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
    
  • 确认DbProviderFactories配置无误
    你当前的<DbProviderFactories>配置是正确的,它已经先移除旧的invariant再添加新的,确保了System.Data.SQLite对应System.Data.SQLite.SQLiteFactory,System.Data.SQLite.EF6对应EF6的工厂,这部分可以保留。

  • 验证连接字符串的Provider设置
    你的连接字符串里provider=System.Data.SQLite.EF6是正确的,和修正后的EF provider invariant完全匹配,这部分不用修改。

  • 检查NuGet包安装状态
    确保项目安装了正确的SQLite相关NuGet包:

    • 必须安装System.Data.SQLite.EF6(提供EF6集成支持)
    • System.Data.SQLite(核心SQLite驱动)会作为依赖自动安装,不要手动卸载它
  • 清理缓存并重新生成项目
    VS的EDMX设计器有时候会缓存旧的配置,导致修改不生效,执行以下操作:

    • 关闭Visual Studio,删除项目根目录下的bin和obj文件夹
    • 重新打开项目,点击顶部菜单的Build → Clean Solution
    • 再执行Build → Rebuild Solution
    • 最后尝试刷新EDMX模型

错误原因说明

原来的配置中,你给System.Data.SQLite这个invariant绑定了EF6的SQLiteProviderServices类型,而这个类型是EF的provider服务,不是DbProviderFactory。当EF设计器尝试刷新模型时,无法找到对应System.Data.SQLite.SQLiteFactory的正确provider名称,因此抛出异常。修正后,EF会正确使用System.Data.SQLite.EF6这个provider来处理SQLite的EF集成,基础驱动的映射也由DbProviderFactories配置正确处理。

内容的提问来源于stack exchange,提问作者Yabbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:04:32