实体框架代码优先迁移在错误的提供程序上失败(3.5 而不是 4.0)

2023-12-03

我正在尝试使用 Entity Framework 6.0.2 for SQL Server Compact(代码优先)向项目添加迁移(第一次)。应用程序与数据库通信没有问题。迁移失败并显示错误消息:

系统.InvalidOperationException:
未找到具有固定名称“System.Data.SqlServerCe.3.5”的 ADO.NET 提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分中注册。

该项目从未提及过SqlServerCe.3.5我无法使用 Visual Studio 查找和替换命令找到一个

The app.config文件有:

<configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
      </dependentAssembly>
  </assemblyBinding>
</runtime>
<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
    <parameters>
      <parameter value="System.Data.SqlServerCe.4.0" />
    </parameters>
  </defaultConnectionFactory>
</entityFramework>
<appSettings>
<system.data>
  <DbProviderFactories>
    <remove invariant="System.Data.SqlServerCe.4.0" />
    <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  </DbProviderFactories>
</system.data>

有谁知道我如何强制迁移使用SqlServerCe.4.0(+/- 删除对 3.5 的引用)?谢谢。

Edit

Many Thanks to Mr Sql Server Compact (ErikEJ) for his suggestions.

不幸的是,删除绑定重定向节点只会导致:

System.Data.Entity.Core.ProviderInknownException: 从数据库获取提供商信息时发生错误。这可能是由于实体框架使用了不正确的连接字符串造成的。检查内部异常的详细信息并确保连接字符串正确。 ---> System.Data.Entity.Core.ProviderInknownException:提供程序未返回 ProviderManifestToken 字符串。 ---> System.ArgumentException:给定的连接不是“SqlCeConnection”类型。

您是完全正确的 - 该项目正在使用私有部署。 System.Data.SqlServerCe 和 System.Data.SqlServerCe.Entity 引用的程序集版本均为 4.0.0.1

编辑2 - 已解决

我需要按照 erik 的建议删除绑定重定向节点,并将提供程序添加到应用程序配置的 EntityFramework 节点(应用程序使用基于代码的提供程序服务配置,因此不包括这些),如下所示

<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>

删除绑定重定向。您似乎正在尝试使用私有部署,但您使用的是正确的 System.data.SqlServerCe.dll (检查程序集版本)。如果是 4.0.0.0 而不是 4.0.0.1,则更改为 DbProviderfactories 设置以指向正确的程序集版本

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架代码优先迁移在错误的提供程序上失败(3.5 而不是 4.0) 的相关文章

  • 实体框架迁移添加列两次

    我正在运行 Entity Freemework Code First 迁移 尝试运行应用程序时 出现错误 列 ID 在规范中出现多次 我在配置中将 AutomaticMigrationsEnabled 设置为 true 因为当我运行项目时
  • 种子实体和用户、角色?

    如何播种用户 角色和应用程序特定实体 看起来好像 IdentityModel 的目标是它自己的 Context internal sealed class Configuration DbMigrationsConfiguration
  • 如何将参数传递给 DbMigration.Sql() 方法

    使用实体框架迁移时 DbMigration基类有一个 Sql 方法 它接受匿名对象中的参数 http msdn microsoft com en us library system data entity migrations dbmigr
  • 手动向 DbMigrator 提供 DbContext

    Platform NET 4 5 和实体框架 6 Question我有以下代码来执行迁移 The following function just returns an object of the Configuration class ge
  • MigrateDatabaseToLatestVersion 没有运行 Seed() 方法

    我正在尝试自动生成我的数据库 如果它不存在 并运行Seed 方法来填充数据 在我的数据库上下文构造函数中 我有这个 Database SetInitializer new MigrateDatabaseToLatestVersion
  • 如何在实体框架 4.3.1 中禁用迁移?

    有没有办法在 Entity Framework 4 3 1 中禁用迁移 我从项目中删除了迁移文件夹以及数据库中生成的表 但它不起作用 如何删除迁移 如果您不想使用迁移 但同时希望 EF 为您创建数据库 则只需设置正确的数据库初始值设定项 D
  • EF AddOrUpdate 种子不更新子实体

    我在播种数据时遇到一些问题 我能够使用一个非常小的应用程序重现该问题 鉴于您有这种种子方法 protected override void Seed JunkContext context context Junks AddOrUpdate
  • 从 SQL Server CE 获取 @@Identity 时出现“解析查询时出错”

    我正在编写一个简单的桌面应用程序 其中使用本地 SQL 数据库 SQL Server CE 这是有问题的部分 SqlCeConnection conn new SqlCeConnection Data Source DataDirector
  • 在 WPF 中使用 EF Code First 和 SqlCe

    我正在尝试将 EF Code First 与我的 WPF 应用程序一起使用 其想法是在 AppData MyApp 中创建一个 SqlCe Db 如果没有 并将其与 EF Code First 一起使用 目前 当我尝试从它应该创建的数据库中
  • 新的嵌入式 Firebird,代码优先,EF6 项目导致 SerializationException

    我正在尝试使用 EF6 设置 Firebird 作为我正在编写的简单应用程序的嵌入式服务器 但无法使其正常工作 我有一个 CLI 项目 即应用程序 和 DAL 项目 即 DB 我将 NuGet 包添加到两者中 并使用一个简单的实体创建了一个
  • Sql CE 多条语句不一致

    长期以来 您确实可以使用 SQL CE 执行多个语句 https stackoverflow com questions 6970502 can i execute multiple statements in sql server com
  • 在 .NET core 2.0 中创建迁移步骤时,将“IDesignTimeDbContextFactory”的实现添加到项目错误中

    我有一个 NET core 1 0 web 应用程序运行良好 我必须升级到 NET Core 2 0 我还必须为我的 SQLite 数据库添加迁移步骤 如果我启动这个命令 添加迁移 MyMigrationStepName 我收到此错误 无法
  • MsSql Compact,两列及以上列的唯一约束

    伙计们 MsSql Compact 是否具有在两个或多个列上创建复合唯一索引 只是约束 而不是主键 的功能 第 1 栏 第 2 栏 1 2 1 2 插入 更新必须生成异常 我没有通过服务器资源管理器的设计器看到此功能 CREATE UNIQ
  • SQL CE Compact 3.5 表的标识列

    是否有一个查询可以针对 INFORMATION SCHEMA 或针对系统表编写 以确定某个列是否是 SQL CE 版本 3 5 中的标识列 Use 列属性 供您参考 a 列属性 Transact SQL http technet micro
  • 通过网络共享的 SQL CE

    我之前见过这个问题 但找不到关于什么是可能 不可能以及什么解决方法可能可用的明确解释 我有一个现有的 C 应用程序 它使用 SQL CE 来存储本地信息 该数据库只能由单个应用程序访问 并存储在用户的 appdata 文件夹中 某些环境将
  • SQL CE 天蓝色连接

    我正在使用 azure 发布 asp net 应用程序 当我在本地发布时 它工作正常 但在 Azure 上 与数据库相关的所有内容都没有显示 并收到 由于发生内部服务器错误 无法显示页面 想知道我的连接字符串是否有问题 http webly
  • ASP.NET MVC 4,迁移 - 如何在生产服务器上运行“更新数据库”

    我可以使用包管理器在本地运行 update database verbose 可能是一个愚蠢的问题 但我无法在线找到它 一旦我的网站部署 我如何在服务器上手动运行它 其次 您会推荐哪些其他策略来将数据库迁移部署到生产环境 以及它们如何更好
  • 如何让实体框架初始化新创建的实体上的集合?

    我正在尝试用一些测试数据来种子我的数据库IDatabaseIntialiser像这样 protected override void Seed BlogDataContext context
  • 无法加载 SQL Server Compact 的本机组件

    我已经在 Win7 x64 上安装了 SQL Server Compact Edition 4 0 它可以运行于 Asp Net 和桌面应用程序 此 PC 还安装了 Visual Studio 2010 SP1 但是我的 Server 20
  • Entity Framework 6 Code First 迁移 - 用于生产的多个分支

    在我的项目中 我们有一个分支模型 它有一个单独的开发分支 并且每个版本都有一个单独的分支 它可能看起来像这样 dev master r1 r2 因此 我们在 dev 上开发并将其合并到 master 然后创建一个发布分支 r1 r2 我们想

随机推荐