繁体   English   中英

在命名空间“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超链接时, 站点打开(不幸的是,没有提供有关错误的详细信息)。

尝试自己修复错误时,我找到了System.Data.OleDb命名空间文档。 这是我的有趣观察:由DataSetProj.Designer.cs文件自动生成的代码具有类(假设在命名空间中定义),例如OleDbConnectionOleDbDataAdapter 有趣的是, 这个命名空间提到这些类,但似乎它们不是命名空间的一部分(尽管这是官方的 MS 文档)。 当我输入任何一个类的文档时,它们都包含在System.Data.Ole.Db命名空间中。 这很奇怪而且非常不清楚(至少对我来说,初级开发人员)文档。

我尝试切换到.NET 4.8 Framework ,使用ErikEJEF Core Power Tools (不幸的是它不适用于 Access *.mdb文件)。 我在任何地方都找不到这个问题的答案,尽管似乎很多人都会遇到这样的问题。

我如何使它工作?

我注意到OleDbDataAdapter class 中引用的命名空间System.Data.OleDb位于System.Data.OleDb.dll程序集中。 当用谷歌搜索程序集的名称时,我找到了这个链接。 下载并安装程序集后(使用 NuGet Package Manager),错误得到解决。

我希望其他有同样问题的人在访问这篇文章时能解决这个问题。

System.Data.OleDb 不是 .Net 5 的一部分,但可作为 .Net 平台扩展的一部分。 有关 .Net 平台扩展的更多详细信息,请参见下面的链接: Docs.microsoft.com 上的 .NET 平台扩展是什么?

If ok with exclusively targeting Microsoft Windows Platform, you can consider installing the windows compatibility pack which includes the OleDb dll as well (below link) or consider rewriting your code to avoid OleDb (ODCB or ADO maybe?): https://www. nuget.org/packages/Microsoft.Windows.Compatibility

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM