代码之家  ›  专栏  ›  技术社区  ›  Gage

Castle活动记录多个数据库连接(Oracle和SQL)

  •  2
  • Gage  · 技术社区  · 15 年前

    脚本: 我有一个从SQL数据库和Oracle数据库中提取数据的应用程序。我已经为SQL端实现了nhibernate,并且一个同事已经有了Oracle端的工作实现(相同的对象不同的项目)。我目前正在app.config中定义连接字符串,并在program.cs中调用此函数

     var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Foo"].ToString();
     var configuration = InPlaceConfigurationSource.Build(DatabaseType.MsSqlServer2000, connectionString);
     ActiveRecordStarter.Initialize(System.Reflection.Assembly.GetExecutingAssembly(), configuration);
    

    注:该项目位于C.NET 3.5中。

    我已经阅读过关于使用DifferentDatabaseScope的内容,但是当我尝试查询时,查询不会返回任何结果,也无法在nhib探查器中看到任何结果。没有错误弹出,只有0个计数。

    问题: 如何实现多个连接?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Gage    15 年前


    http://www.darkside.co.za/archive/2008/01/21/castle-activerecord-connecting-to-multiple-databases.aspx

    <activerecord>
    
    <config>
      <add key="connection.driver_class" 
          value="NHibernate.Driver.OracleClientDriver" />
      <add key="dialect"                 
          value="NHibernate.Dialect.Oracle10gDialect" />
      <add key="connection.provider"            
          value="NHibernate.Connection.DriverConnectionProvider" />
      <add key="connection.connection_string" 
          value="Data Source = 
                  (DESCRIPTION = 
                     (ADDRESS = 
                        (PROTOCOL = TCP)
                        (HOST = SERVERNAME)
                        (PORT = 1521)
                     )
                     (ADDRESS = 
                        (PROTOCOL = TCP)
                        (HOST = SERVERNAME)
                        (PORT = 1521)
                     )
                     (LOAD_BALANCE = yes)
                     (CONNECT_DATA =
                        (SERVER = DEDICATED)
                        (SERVICE_NAME = NAME)
                     )
                  );User Id = ID; Password = PASS;" />
    </config>
    

        <config type="Sens.SensClass`1, Sens">
          <add key="connection.driver_class" 
             value="NHibernate.Driver.SqlClientDriver" />
          <add key="dialect"                 
             value="NHibernate.Dialect.MsSql2000Dialect" />
          <add key="connection.provider"     
             value="NHibernate.Connection.DriverConnectionProvider" />
          <add key="connection.connection_string" 
             value="Data Source=mntcon016\;Initial Catalog=TEST;Trusted_Connection=True;" />
        </config>
      </activerecord>
    
    
      <configSections>
        <section name="activerecord"
                    type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" />
        <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
      </configSections>
      <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
        <session-factory>
          <property name="proxyfactory.factory_class"> NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle </property>
        </session-factory>
      </hibernate-configuration>
    

     ActiveRecordStarter.Initialize(
                   ActiveRecordSectionHandler.Instance, types.ToArray());
    

    public abstract class TestClass<T> : ActiveRecordBase<T>
    {
    
    }