首页 > 解决方案 > 来自程序集“IBM.EntityFrameworkCore”的“IBM.EntityFrameworkCore.Query.Internal.Db2SqlTranslatingExpressionVisitorFactory”类型中的方法“创建”

问题描述

我正在尝试使用EntityFrameworkCore 3.1NuGet 版本连接到 IBM DB2 数据库。我的DataAccess项目是使用 .NET 标准 2.1 构建的,我在 .NET Core 3.1 Web API 项目中添加了它的引用。我正在DbContext使用内置的 MS 依赖注入在我的 Web API 核心项目中注册,如下所示。

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddDbContext<RDSContext>(options => options
        .UseDb2(Configuration["connectionStrings_IBMDb"], p => p.SetServerInfo(IBMDBServerType.IDS)));
    ...
}

当我尝试运行时,出现以下错误。无法理解根本原因。

System.TypeLoadException:来自程序集“IBM.EntityFrameworkCore,版本=3.1.0.400,文化=中性,PublicKeyToken=7c307b91aa13d208”的“IBM.EntityFrameworkCore.Query.Internal.Db2SqlTranslatingExpressionVisitorFactory”类型中的“方法“创建”没有实现。

我的DataAccess项目有以下参考:

<PackageReference Include="IBM.Data.DB2.Core" Version="3.1.0.200" />
<PackageReference Include="IBM.EntityFrameworkCore" Version="3.1.0.200" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.0">

任何想法,我该如何解决这个错误?

标签: c#.netentity-frameworkentity-framework-coredb2

解决方案


检查您的 Microsoft EntityFrameworkCore 包的版本。我相信最新版本是 5.x。我遇到了同样的问题,但能够通过将 Microsoft.EntityFrameworkCore.SqlSever 降级到 3.1.18 来解决它。除了 IBM EntityFrameworkCore (3.1.0.500),我还在我的项目(.net core 3.1 LTS)中使用了 EntityFrameworkCoreSqlServer 组件。


推荐阅读