.net-core - 错误 使用 Scaffold-DbContext、EntityFrameworkCore.Jet、.NetCore 时,无法从程序集 System.Data 加载类型 System.Data.OleDb.OleDbConnection

标签 .net-core entity-framework-core .net-core-2.2 jet-ef-provider

我正在尝试使用 Entity Framework Core 中的 Scaffold-DbContext 从现有的 MS Access 数据库创建模型。

在包管理器控制台中运行命令时:

Scaffold-DbContext "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Folder\Database.mdb;" EntityFrameworkCore.Jet

我收到以下错误:
Could not load type 'System.Data.OleDb.OleDbConnection' from assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=123123123'.

我正在使用具有以下设置的 ClassLibrary 项目:
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <PlatformTarget>AnyCPU</PlatformTarget>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="EntityFrameworkCore.Jet" Version="2.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.4" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.4">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
  </ItemGroup>

</Project>

我正在使用 EntityFrameworkCore.Jet提供者。

x32 和 x64 OleDb Dll 都在机器中:
C:\Program Files\Common Files\microsoft shared\OFFICE14\ACEOLEDB.DLL
C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\ACEOLEDB.DLL

从 Microsoft Access Database Engine 2010 Redistributable 安装的 x64
和来自 Office Professional Plus 32 位的 x32

脚手架 SQL 数据库工作正常。

已经去了https://github.com/bubibubi/EntityFrameworkCore.Jet/wiki/Limitations

是否缺少某些东西或此设置应该有效?任何帮助,将不胜感激。

最佳答案

直到 2019 年 9 月,以下类型才可用于 .NET Core(预览版之外):

  • System.Data.OleDb.OleDbCommand
  • System.Data.OleDb.OleDbCommandBuilder
  • System.Data.OleDb.OleDbConnection
  • System.Data.OleDb.OleDbDataAdapter
  • System.Data.OleDb.OleDbDataReader
  • System.Data.OleDb.OleDbParameter
  • System.Data.OleDb.OleDbParameterCollection
  • System.Data.OleDb.OleDbTransaction

  • 它们现在在 System.Data.OleDb 中可用针对 .NET Core 2.1、.NET Framework 4.6.1、.NETStandard 2.0 和其他框架的 Nuget 包。

    如果您添加此包,您现在应该能够以 .NET Core 为目标,或者,如果您愿意,也可以同时以 .NET Core 和 .NET Framework 为目标。

    另见:GitHub issue这导致了这个包的开发和发布。

    关于.net-core - 错误 使用 Scaffold-DbContext、EntityFrameworkCore.Jet、.NetCore 时,无法从程序集 System.Data 加载类型 System.Data.OleDb.OleDbConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55696920/

    相关文章:

    azure - ListBlobsSegmentedAsync 突然停止返回 Blob 目录中的文件,即使存储资源管理器显示文件在那里

    c# - ASP.NET Core EF Code First appsettings.json

    c# - 将属性访问表达式转换为谓词表达式

    c# - EF 核心 : Define foreign key for part of a composite PK using a chained property

    c# - .NET Core 2.2 目标进程退出时未引发 CoreCLR 启动事件错误

    c# - 如何使用 .net core 2.2 的实例 api 将全局配置选项添加到 Automapper v8

    c# - 多个值包含动态 Linq

    c# - 如何检测我的库是否在 .Net Core 3 桌面包下运行

    c# - ASP.NET核心: Parse complex struct from URL

    .net-core - NopCommerce 插件内置于自定义插件中