【问题标题】:Type Load Exception in EF Core ProjectEF Core 项目中的类型加载异常
【发布时间】:2021-03-11 11:39:18
【问题描述】:

我有一个使用 EF Core 的 ASP.NET Core 3.1 Web API 应用程序。这是我在Startup类的ConfigureServices方法中的配置:

services.AddDbContext<ApplicationContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("AppConn")));

上述配置经过测试,适用于 SQL Server 数据库。

然后我在成功安装它的包后切换到使用Sqlite。

services.AddDbContext<ApplicationContext>(options =>
     options.UseSqlite("Data Source=sqlitedemo.db"));

但是当我尝试添加 EF 迁移时

add-migration initial -context ApplicationContext

我收到此错误:

System.Reflection.TargetInvocationException:调用的目标已抛出异常。

System.TypeLoadException:无法从程序集“Microsoft.EntityFrameworkCore, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60”加载类型“Microsoft.EntityFrameworkCore.Internal.SemanticVersionComparer”。

{ 堆栈跟踪 }

调用的目标已抛出异常。

【问题讨论】:

  • 您似乎有 EF Core 相关的包版本不匹配。请包括与 EF Core 相关的项目包引用(来自 .csproj 的所有条目以 &lt;PackageReference Include="Microsoft.EntityFrameworkCore. 开头)

标签: c# .net-core entity-framework-core


【解决方案1】:

请将您的实体框架核心 nuget 包更新到 3.1.10(或最新的 5.0.0)。它会解决你的问题。

【讨论】:

  • 我得到了这个答案的帮助,但是有一个经验可以分享,在删除所有迁移并尝试添加“第一个”迁移后,Microsoft.EntityFrameworkCore.Tools 的版本突然从 5 倍跳回到 3 倍。另外,检查 .csproj 文件。
【解决方案2】:

我安装了 EF Core 5 包,但没有安装 Microsoft.EntityFrameworkCore.Design,并且一个包隐式引用旧版本 (Microsoft.EntityFrameworkCore.Design 3.0.0)。

安装对Microsoft.EntityFrameworkCore.Design 5.x.x 的显式依赖解决了我的问题。

【讨论】:

    【解决方案3】:

    当我的项目中的所有依赖项似乎都正确时,我遇到了类似的问题。但问题是上下文位于解决方案中的一个项目中,而解决方案中的另一个项目是启动项目。而且该项目恰好包含不同版本的 EFCore。

    在包管理器控制台中使用上下文的项目作为启动项目为我解决了这个问题。

    add-migration -startupproject myProjectWithTheMigration

    【讨论】:

      【解决方案4】:

      不要忘记,对于迁移,您必须在主 EntityFramework 项目和启动项目中都安装包。

      Microsoft.EntityFramework.Core
      Microsoft.EntityFramework.Core.Design
      

      【讨论】:

      • error: There are no versions available for the package 'Microsoft.EntityFramework.Core
      • error: There are no versions available for the package 'Microsoft.EntityFramework.Core.Design
      【解决方案5】:

      我在 .NET Core 3.1 项目中遇到了这个问题。我通过在启动项目中安装包 Microsoft.EntityFrameworkCore.Design 来修复它

      【讨论】:

      • 问题是你安装了哪个 Microsoft.EntityFrameworkCore.Design?
      • 我有 EF5 的 netcoreapp3.1 应用程序
      【解决方案6】:

      确保所引用的每个项目都引入了相同主要/次要版本的Entity Framework nuget包。


      我将一个项目从 V3 升级到 V6,但没有将 EF Core nuget 包升级到 6。一个项目有 6 个,而另一个有 3 个,当我执行 update-database 时收到此错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多