2

我正在尝试使用 Fluent NHibernate 连接到我们的 AS/400 iSeries DB2 服务器。我有以下代码:

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。它应该加载 IBM.Data.DB2.iSeries.dll,它位于我的 bin 文件夹中。

NHibernate 有一种加载 iSeries dll 的方法。我如何告诉 Fluent 加载它?

4

1 回答 1

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;
}
于 2012-08-25T03:26:32.917 回答