6

我继承了一个 C#/NHibernate/MS SQL Server 项目,并且是 NHibernate 的新手。给我的首要任务之一是将数据库从 MS SQL Server (2008 R2) 迁移到 Postgresql 9.2。我正在使用 Npgsql 2.0.12(.net 2.0 版本)。Mono.Security.dll 和 Npgsql.dll 包含在我的项目引用中,它们存在于我的 bin 目录中。当代码执行以下行时:

SessionFactory.OpenSession();

消息引发异常

“无法从 NHibernate.Driver.NpgsqlDriver 创建驱动程序。”

在网上搜索,给了我一些想法,但都没有奏效。我继承的这段代码在使用 MS SQL Server 没有问题的几个客户端上进行生产。这是我的 hibernate.cfg.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.PostgreSQLDialect</property>
    <property name="connection.driver_class">NHibernate.Driver.NpgsqlDriver</property>
    <property name="connection.connection_string">server=localhost;Port=5432;Database=vehicletracker;User Id=postgres;Password=********;</property>
  </session-factory>
</hibernate-configuration>

我没有忘记包括“使用 Npgsql;”,它就在那里。有什么建议么?

问候,

4

2 回答 2

9

我找到了自己问题的答案。有几个特定于我的工作环境的问题,但最终 Mono.Security.dll 和 Npgsql.dll 在我的最终输出目录中不可用。这两个文件存在于我的数据访问层(一个类库)的 bin 目录中,但不在称为类库的测试项目的 bin 目录中。现在一切正常。

于 2012-11-13T21:45:17.227 回答
1

If you're using NuGet for the nhibernate libraries try uninstalling the packages and reinstall them. I'm sure there is a more efficient way someone knows of to fix this kind of issue but for me it solved this exact issue.

于 2012-11-10T13:49:55.263 回答