【问题标题】:Type name "OleDbDataAdapter" could not be found in the namespace "System.Data.OleDb"在命名空间“System.Data.OleDb”中找不到类型名称“OleDbDataAdapter”
【发布时间】:2021-05-05 13:01:44
【问题描述】:

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 命名空间文档。这是我有趣的观察:DataSetProj.Designer.cs 文件自动生成的代码有类(应该在命名空间中定义),如OleDbConnectionOleDbDataAdapter。有趣的是,this 命名空间 提及 these 类,但似乎它们不是命名空间的一部分(尽管这是官方的 MS 文档)。当我输入任一类的documentation 时,它们都包含在System.Data.Ole.Db 命名空间中。这很奇怪而且非常不清楚(至少对我来说,初级开发人员)文档。

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

如何让它发挥作用?

【问题讨论】:

    标签: c# .net wpf dataset


    【解决方案1】:

    我注意到OleDbDataAdapter 类中引用的命名空间System.Data.OleDb 位于System.Data.OleDb.dll 程序集中。当用谷歌搜索程序集的名称时,我找到了this 链接。下载并安装程序集(使用 NuGet 包管理器)后,错误已解决。

    我希望其他有相同问题的人在访问此帖子时能够解决它。

    【讨论】:

      【解决方案2】:

      system.data.oledb不属于.NET 5,但可用作.NET平台扩展的一部分。有关.NET平台扩展的更多详细信息,请参阅以下链接: What are .NET Platform Extensions on docs.microsoft.com?

      如果完全针对 Microsoft Windows 平台没问题,您可以考虑安装包含 OleDb dll 的 Windows 兼容包(以下链接)或考虑重写代码以避免 OleDb(可能是 ODCB 或 ADO?): https://www.nuget.org/packages/Microsoft.Windows.Compatibility

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-25
        • 2017-07-12
        • 2011-05-13
        • 2021-03-18
        • 1970-01-01
        • 2023-02-22
        • 2012-06-19
        相关资源
        最近更新 更多