如何在.net 7中使用ODAC和Oracle数据访问库连接到Oracle数据库

7gyucuyw  于 2023-10-16  发布在  Oracle
关注(0)|答案(2)|浏览(122)

任何人都可以请让我知道,如果有任何等效的库为oracle.dataccess.dll在.net 7。我们正在尝试将现有的.net应用程序迁移到.net 7,该应用程序使用带有ODAC的非托管客户端库。问题是我在.net core中看到的引用只与Oracle.ManagedDataAccess.core库相关。请说明.net core中是否有非托管数据访问库。
我怀疑唯一的选择是在.net核心中使用Oracle.ManagedDataAccess。但是如果我必须从未管理转换为托管,什么样的配置会有所不同。任何参考链接将是非常有帮助的

ttp71kqs

ttp71kqs1#

查看系统要求

用于.NET的Oracle数据提供程序,非托管驱动程序需要以下内容:

Microsoft .NET Framework

  • 仅Microsoft .NET Framework 3.5 SP 1和更高版本支持ODP.NET for .NET Framework 2.0。
  • 适用于.NET Framework 4的ODP.NET仅支持Microsoft .NET Framework 4.5.2、4.6.x和4.7.x。

您似乎无法使用非托管驱动程序。有关差异,请参阅同一文档中的ODP.NET,托管驱动程序和ODP.NET,非托管驱动程序之间的配置差异

m2xkgtsf

m2xkgtsf2#

以下是两种方法:
1.实体框架DB优先(脚手架)
https://learn.microsoft.com/en-us/ef/core/managing-schemas/scaffolding/?tabs=dotnet-core-cli

services
   .AddDbContext<YourDbContext>(
            options => 
            { 
              options.UseOracle(configuration.GetConnectionString("YourOracleConnectionString")); 
            },
            ServiceLifetime.Scoped);
  1. Nuget Oracle.ManagedDataAccess.Client
    以存储过程为例。
using var connection = new OracleConnection("your connection string");
connection.Open();
var dataAccess = new OracleDataAdapter();
var command = new OracleCommand
{
    CommandType = CommandType.StoredProcedure,
    CommandText = "procedure name",
    Connection = connection
};

command.Parameters.Add("procedure paramater 1", OracleDbType.Int32).Value = functionArgument1;
command.Parameters.Add("procedure paramater 2", OracleDbType.Varchar2).Value = functionArgument2;
dataAccess.SelectCommand = command;

await dataAccess.SelectCommand.ExecuteReaderAsync();

如果你有现有的数据库,我建议选择1,但这取决于你的需求。

相关问题