【问题标题】:Oracle.ManagedDataAccess needs regular DataAccess DLL?Oracle.ManagedDataAccess 需要常规的 DataAccess DLL?
【发布时间】:2015-10-29 17:26:51
【问题描述】:

我有一个使用 FluentMigrator 并连接到 Oracle 数据库以运行其查询的应用程序。以前,它使用 Oracle.DataAccess 来执行此操作;但现在我被要求让它使用 Oracle。ManagedDataAccess;这就是我遇到问题的地方。

当我运行我的应用程序时,我收到一条错误消息,指出它找不到“Oracle.DataAccess”或其依赖项之一。我已将 Oracle.DataAccess 的所有引用更改为 Oracle。ManagedDataAccess;但是我的应用程序似乎仍然需要这个较旧的 dll。如果我将该常规 DataAccess dll 放回与我的应用程序相同的文件夹中(连同 ManagedDataAccess);它有效。

我的问题:Oracle.托管DataAccess 是否要求我在项目中也有常规的DataAccess dll?据我了解,ManagedDataAccess 可以做任何事情,并且没有任何外部依赖项。

编辑:传递给 Migrate.exe 的参数是否暗示使用 Oracle.DataAccess.dll?可能我在那里指的是它而不是识别它?

【问题讨论】:

  • 不,Oracle.ManagedDataAccess.dll 不需要任何 Oracle.DataAccess.dll。仔细检查你的整个代码,你一定在某个地方留下了对 Oracle.DataAccess 的引用。
  • 好吧,我就是这么想的。我搜索了我的项目,发现对旧 dll、Oracle.DataAccess 的唯一引用位于 ManagedDataAccess dll 本身中。我假设这些引用是什么,它们引用托管 dll 本身中的某些内容?因为它应该是独立的..

标签: c# .net oracle data-access fluent-migrator


【解决方案1】:

Oracle.ManagedDataAccess 应该是您所需要的。尝试在您的解决方案目录上运行 Agent Ransack 并查看 Oracle.DataAccess 是否仍在任何地方被引用。

【讨论】:

  • 我明白了为什么即使我没有在我的项目中引用它,它仍然试图找到旧的 Oracle.DataAccess dll:我正在使用 FluentMigrator,它有一个参数来指定你的数据库'正在使用。我的假设是“Oracle”是我想要的——但事实证明,该参数还有一个“OracleManaged”值。我开始使用它和“Lo”,瞧!它有效。
【解决方案2】:

答案是我用来调用我的项目的 FluentMigrator,它使用参数来指定数据库驱动程序。以前,我使用值“Oracle”,因为那是我要连接的 DB 类型。

但是,当我更改为 Oracle.ManagedDataAccess.dll 时,我认为 FluentMigrator 中的该参数不需要更改。 (“我仍在连接 Oracle 数据库!”)原来该参数有一个“OracleManaged”值。

当我更改参数值时,应用程序立即停止尝试查找旧 DLL。这就解释了为什么即使我删除了我的引用,应用程序似乎仍然使用旧的 dll。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多