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

时间:2012-11-09 14:19:11

标签: postgresql nhibernate npgsql

我继承了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;”,它就在那里。有什么建议吗?

此致

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:1)

如果您正在使用NuGet作为nhibernate库,请尝试卸载软件包并重新安装它们。我确信有一种更有效的方法来解决这类问题,但对我而言,它解决了这个问题。