【问题标题】:ServiceStack ORMLite Migrating from SQLServer to Oracle, .NET Data Provider issueServiceStack ORMLite 从 SQLServer 迁移到 Oracle,.NET 数据提供程序问题
【发布时间】:2014-05-28 16:13:30
【问题描述】:

我正在尝试使用 StackService.ORMLite (Ver: ) 将现有的 c# 代码从 SQL Server 更改为 Oracle。我已按照建议进行了所有必要的更改。现在我遇到了问题“无法找到请求的 .Net Framework 数据提供程序。它可能没有安装。”

var db = new OrmLiteConnectionFactory(AppSettingsHelper.TryGetValue(ConfigKeys.ContentLoaderDataBase, default(string)), OracleDialect.Provider);
        FunqContainer.Register<IDbConnectionFactory>(db);
        FunqContainer.Register<IContentLoaderRepository>(c => new ContentLoaderRepository(db));
        FunqContainer.RegisterAutoWiredAs<HttpRequestor, IHttpRequestor>();
        FunqContainer.RegisterAutoWiredAs<Transformer, ITransformer>();
        FunqContainer.RegisterAutoWiredAs<WKH.MR.ContentLoader.Agent.XmlSerializer, IXmlSerializer>();
        FunqContainer.RegisterAutoWiredAs<WKH.MR.ContentLoader.Agent.FieldParser, IFieldParser>();

我正在使用 ODP.Net 提供程序版本:4.112.3.0 并将 Oracle.DataAccess 引用包含到项目中。 在运行时打开数据库连接时,它会抛出异常“无法找到请求的 .Net Framework 数据提供程序。它可能未安装。”。可能是什么问题?

【问题讨论】:

  • 您是如何安装 ODP.NET 的? Oracle 客户端工具因安装复杂而臭名昭著(例如see here)。您是否使用了 Oracle 的 NuGet 包、按照 zip 文件中的说明进行操作,或者只是添加了对项目的引用?

标签: c# oracle servicestack ormlite-servicestack dataprovider


【解决方案1】:

假设您的 ODP 配置是:

<connectionStrings>
    <add name="yourconfig" providerName="Oracle.DataAccess.Client"
connectionString="Data Source=(..);User Id=..." />

你只需要:
1. 将“Oracle.DataAccess.dll”文件添加到您的应用程序引用
(通常是路径:

%ORACLE_HOME%\product\..\ODP.NET\bin\{version}\Oracle.DataAccess.dll

2.在您的 web.config 下添加两个部分
2.1下“配置\configSections”

<section name="oracle.dataaccess.client"    
    type="System.Data.Common.DbProviderConfigurationHandler, System.Data,Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>    

"system.data\DbProviderFactories"下的2.2(如果不存在则创建)

<remove invariant="Oracle.DataAccess.Client" />    
  <add name="Oracle Data Provider for .NET"    
       invariant="Oracle.DataAccess.Client"    
       description="Oracle Data Provider for .NET"    
       type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version={your version}, Culture=neutral, PublicKeyToken=89b483f429c47342"/>    

我解决了与您相同的问题。请记住确保版本相同,即“Version={version}”与 dll 文件版本相同 祝你好运!

顺便说一句:我建议这篇文章帮助解决 Oracle 连接问题 Oralce Data Provider for .net,这为我节省了大量时间。
ServiceStack 很棒,ORMLite 在很棒的团队下我希望它能帮助使用 Oralce 的人(该死的客户端)

【讨论】:

  • ...我的错,但关键是配置oracle设置,我已经修复了我的答案
猜你喜欢
  • 2016-11-23
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 2023-03-06
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
相关资源
最近更新 更多