【问题标题】:.Net Framework Data Provider error Fluent Nhibernate for Informix DataBase.Net Framework 数据提供程序错误 Fluent Nhibernate for Informix 数据库
【发布时间】:2015-05-05 14:48:36
【问题描述】:

我尝试使用 AutoFac 和 Informix 数据库配置 Fluent Nhibernate,但出现错误:

找不到请求的 .Net Framework 数据提供程序。可能没有安装。

工厂休眠

    ISessionFactory factory = Fluently.Configure()
                                 .Database(
                       IfxSQLIConfiguration
                      .Informix1000
                      .Provider<NHibernate.Connection.DriverConnectionProvider>()
                      .Driver<NHibernate.Driver.IfxDriver>()
                      .Dialect<NHibernate.Dialect.InformixDialect>()
                      .ConnectionString(c => c.FromConnectionStringWithKey(databaseKey))
                      .ShowSql())
                      .Mappings(x => x.FluentMappings.AddFromAssemblyOf<TvLoginMapping>()
                      .Conventions.AddFromAssemblyOf<CustomTypeConvention>()
                      )
                      .BuildSessionFactory();
                factories.Add(databaseKey, factory);

WebConfig 文件:

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <clear />
    <add name="INFORMIX" connectionString=" Provider=Ifxoledbc.2;Password=*******;Persist Security Info=True;User ID=******;Data Source=******;Database=*****;" />
  </connectionStrings>
  

【问题讨论】:

    标签: c# fluent-nhibernate autofac informix


    【解决方案1】:

    我使用了错误的配置来使用 Informix 和 OleDbDriver

              ISessionFactory factory = Fluently.Configure()
                                     .Database(
                           IfxSQLIConfiguration
                          .Informix1000
                          .ConnectionString("conectionString")
                          .Driver<OleDbDriver>()
                          .Dialect<InformixDialect1000>()
                            //.ConnectionString(c => c.FromConnectionStringWithKey(databaseKey))
    
                          .ShowSql())
                          .Mappings(x => x.FluentMappings.AddFromAssemblyOf<TvLoginMapping>()
                          .Conventions.AddFromAssemblyOf<CustomTypeConvention>()
                          )
                          .BuildSessionFactory();
                        factories.Add(databaseKey, factory);
                    }
    

    【讨论】:

      【解决方案2】:

      在添加条目之前,您可能需要&lt;clear/&gt;

      您可以检查 machine.config 以查看其中是否有任何其他 Informix。

      我不认为方言对于您的库的所有版本都是“通用的”。

      见: https://www.symbolsource.org/Public/Metadata/Default/Project/NHibernate/3.0.0.GA/Release/All/NHibernate/NHibernate/Dialect/InformixDialect.cs

      注意类的cmets:

      /// Summary description for InformixDialect.
      /// This dialect is intended to work with IDS version 7.31
      /// However I can test only version 10.00 as I have only this version at work
      /// </summary>
      /// <remarks>
      /// The InformixDialect defaults the following configuration properties:
      /// <list type="table">
      ///     <listheader>
      ///         <term>ConnectionDriver</term>
      ///         <description>NHibernate.Driver.OdbcDriver</description>
      ///         <term>PrepareSql</term>
      ///         <description>true</description>
      ///     </listheader>
      ///     <item>
      ///         <term>connection.driver_class</term>
      ///         <description><see cref="NHibernate.Driver.OdbcDriver" /></description>
      ///     </i
      

      我没有“Informix”版本的眼睛。所以我猜这只是一个提示。

      还要注意有这些方言:

      https://www.symbolsource.org/Public/Metadata/Default/Project/NHibernate/3.0.0.GA/Release/All/NHibernate/NHibernate/Dialect/InformixDialect0940.cs?ImageName=NHibernate

      https://www.symbolsource.org/Public/Metadata/Default/Project/NHibernate/3.0.0.GA/Release/All/NHibernate/NHibernate/Dialect/InformixDialect1000.cs?ImageName=NHibernate

      【讨论】:

        【解决方案3】:

        LINQ 是 NHibernate 的替代方案之一; Informix 支持它。 不幸的是,Informix 本机 .net 驱动程序不支持 LINQ。 您可能必须使用 DB2 Entity Framework 驱动程序来连接 IDS 服务器。 要让 DB2 Entity Framework 驱动程序连接 IDS 服务器,您必须启用 DRDA 协议和 IDS 服务器。

        【讨论】:

          猜你喜欢
          • 2012-08-12
          • 2014-05-22
          • 1970-01-01
          • 1970-01-01
          • 2013-07-05
          • 1970-01-01
          • 2011-03-17
          • 1970-01-01
          • 2014-01-29
          相关资源
          最近更新 更多