2012-08-24 104 views
2

我正嘗試使用流利的NHibernate連接到我們的AS/400 iSeries DB2服務器。我有以下代碼:Fluent NHibernate是否提供iSeries數據提供程序?

private static ISessionFactory CreateSessionFactory() 
{ 
    return Fluently.Configure() 
     .Database(DB2Configuration.Standard.ConnectionString("DataSource=MyServer;UserID=MyUser;Password=password;")) 
     .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly())) 
     .BuildSessionFactory(); 
} 

我nhprof運行,並且我得到的錯誤: 無法加載文件或程序集「的IBM.Data.DB2」或它的一個依賴。系統找不到指定的文件。無法加載類型IBM.Data.DB2.DB2Command,IBM.Data.DB2。

我知道IBM.Data.DB2.dll是在iSeries不正確的.dll文件。它應該加載我的bin文件夾中的IBM.Data.DB2.iSeries.dll。

NHibernate有一種方法來加載iSeries的DLL。我如何告訴Fluent加載它?

回答

4

我想通了,以防萬一別人與此掙扎。

我拿出nhibernate.cfg.xml文件和代碼做了。此代碼似乎工作:

private static ISessionFactory CreateSessionFactory() 
{ 
    ISessionFactory factory = null; 

    var cfg = new Configuration(); 
    cfg.DataBaseIntegration(x => 
    { 
     x.ConnectionString = "DataSource=MyServer;UserID=MyUser;Password=password; DataCompression=True;"; 
     x.Dialect<DB2400Dialect>(); 
     x.Driver<DB2400Driver>(); 
    }); 

    factory = Fluently.Configure(cfg) 
     .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly())) 
     .BuildSessionFactory(); 

    return factory; 
}