在命名空间 "System.Data.OleDb" 中找不到类型名称 "OleDbDataAdapter"

Type name "OleDbDataAdapter" could not be found in the namespace "System.Data.OleDb"

WPF C# (.NET 5.0) 中制作项目时,我想使用数据库中的数据。我有一个 Microsoft Access 文件(2000-2003 兼容版本,*.mdb),我需要将其用于我的项目。

添加新源后 Add > new Item... > Data > DataSet 并正确指定了数据库(连接测试成功),文件 DataSetProj.xsd 已创建。

但是,当我尝试运行代码时,出现了以下错误:

Error   CS1069: The type name 'OleDbDataAdapter' could not be found in the namespace 'System.Data.OleDb'. This type has been forwarded to assembly 'System.Data.OleDb, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' Consider adding a reference to that assembly.

单击 CS1069 超链接时,this 站点打开(不幸的是,没有提供有关错误的具体信息)。

试图自己修复错误,我发现 类 中的任何一个 System.Data.OleDb namespace documentation. Here's my interesting observation: The code automatically generated by DataSetProj.Designer.cs file had classes (supposedly defined in the namespace), like OleDbConnection, or OleDbDataAdapter. Funnily enough, this namespace mentions these classes, but it appears they are not part of the namespace (although this is official MS documentation). When I enter documentation,它们包含在 System.Data.Ole.Db 命名空间中。这是奇怪且超级不清楚(至少对我来说,初级开发人员)的文档。

我尝试切换到 .NET 4.8 Framework,通过 ErikEJ 使用 EF Core Power Tools(不幸的是,它不适用于 Access *.mdb 文件)。我在任何地方都找不到这个问题的答案,虽然看起来很多人都会有这样的问题。

如何让它发挥作用?

我注意到命名空间 System.Data.OleDb referenced in OleDbDataAdapter class is located in System.Data.OleDb.dll Assembly. When googled the name of the assembly, I found this link。下载并安装程序集(使用 NuGet 包管理器)后,错误已解决。

我希望遇到同样问题的其他人在访问此 post 时能够解决问题。

System.Data.OleDb 不是 .Net 5 的一部分,但作为 .Net 平台扩展的一部分提供。有关 .Net 平台扩展的更多详细信息,请参见下文 link:

如果可以专门针对 Microsoft Windows 平台,您可以考虑安装 windows 兼容包,其中也包括 OleDb dll(低于 link)或考虑重写您的代码避免 OleDb(可能是 ODCB 或 ADO?): https://www.nuget.org/packages/Microsoft.Windows.Compatibility