首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Scaffold-DbContext、EntityFrameworkCore.Jet、.NetCore时,错误无法从程序集System.Data加载类型的.NetCore。

使用Scaffold-DbContext、EntityFrameworkCore.Jet、.NetCore时,错误无法从程序集System.Data加载类型的.NetCore。
EN

Stack Overflow用户
提问于 2019-04-15 20:39:07
回答 3查看 10.2K关注 0票数 9

我试图使用实体框架核心的Scaffold-DbContext从现有的MS Access数据库创建模型。

运行命令时,在控制台中:

代码语言:javascript
复制
Scaffold-DbContext "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Folder\Database.mdb;" EntityFrameworkCore.Jet

我得到以下错误:

代码语言:javascript
复制
Could not load type 'System.Data.OleDb.OleDbConnection' from assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=123123123'.

我使用的是一个ClassLibrary项目,其设置如下:

代码语言:javascript
复制
<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都在机器中:

代码语言:javascript
复制
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数据库引擎2010可再发行版的x64和来自Office 32位的x32

脚手架SQL数据库运行良好。

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

是缺少了什么,还是这个设置应该有效?任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-16 12:24:12

您需要针对.Net框架。

实际上,OleDb并没有移植到.Net核心。https://github.com/dotnet/corefx/issues/23542

您可以尝试使用.Net Framework4.6或4.7。

票数 4
EN

Stack Overflow用户

发布于 2019-10-03 14:35:27

以下类型直到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 Nuget包中使用,它针对.NET Core2.1、.NET Framework4.6.1、.NETStandard 2.0和其他框架。

如果您添加了这个包,您现在应该能够针对.NET核心,或者,如果您愿意的话,多目标.NET核心和.NET框架。

还请参阅:导致开发和发布此包的GitHub问题

票数 14
EN

Stack Overflow用户

发布于 2021-09-13 09:30:48

System.Data.OleDb for .NET Core现在可在NuGet.org上使用,如:https://github.com/dotnet/runtime/issues/23321#issuecomment-502413964

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55696920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档