2012-11-09 21 views
5

Tôi đã kế thừa dự án C#/NHibernate/MS SQL Server và mới sử dụng NHibernate. Một trong những nhiệm vụ đầu tiên được đưa ra cho tôi là di chuyển cơ sở dữ liệu từ MS SQL Server (2008 R2) sang Postgresql 9.2. Tôi đang sử dụng Npgsql 2.0.12 (phiên bản 2.0 .net). Các Mono.Security.dll và Npgsql.dll được bao gồm trong dự án của tôi Tài liệu tham khảo và chúng tồn tại trong thư mục bin của tôi. Khi mã thực thi dòng sau:Không thể tạo trình điều khiển từ NHibernate.Driver.NpgsqlDriver

SessionFactory.OpenSession(); 

một ngoại lệ được ném với thông điệp

"Không thể tạo tài xế từ NHibernate.Driver.NpgsqlDriver."

Tìm kiếm trên web, đã cho tôi một vài ý tưởng nhưng không có ý tưởng nào có hiệu quả. Mã này tôi đã kế thừa đang được sản xuất tại một số máy khách không có vấn đề gì khi sử dụng MS SQL Server. Đây là tệp hibernate.cfg.xml của tôi:

<?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> 

Tôi không quên bao gồm "using Npgsql;", nó ở đó. Bất kỳ đề xuất?

Kính trọng,

B

Trả lời

1

Nếu bạn đang sử dụng NuGet cho các thư viện nhibernate thử gỡ bỏ cài đặt các gói và cài đặt lại chúng. Tôi chắc chắn rằng có một cách hiệu quả hơn ai đó biết để sửa chữa loại vấn đề này nhưng đối với tôi nó giải quyết vấn đề chính xác này.

+0

Xin chào Tom, cảm ơn bạn đã dành thời gian hỗ trợ. Tôi không sử dụng NuGet kể từ IDE của tôi là Visual Studio 2008. Tôi đã xóa và thay thế nHibernate và Npgsql dll của tôi nhưng vẫn không có may mắn. Một lần nữa, bằng cách sử dụng MS SQL Server hoạt động tốt nhưng cố gắng kết nối với Npgsql ném một ngoại lệ. – Woolly

9

Tôi đã tìm thấy câu trả lời cho câu hỏi của riêng mình. Có một số vấn đề cụ thể đối với môi trường làm việc của tôi nhưng cuối cùng Mono.Security.dll và Npgsql.dll không có sẵn trong thư mục đầu ra cuối cùng của tôi. Hai tệp đã có trong thư mục bin của Lớp Truy cập Dữ liệu của tôi (một thư viện lớp) nhưng không có trong thư mục bin của Dự án Thử nghiệm của tôi gọi là thư viện lớp. Bây giờ mọi thứ đang làm việc rất ổn định.

+1

Điều này cũng giúp tôi. Tại sao bạn không chấp nhận câu trả lời của bạn? – IvanP

+0

Tôi đã giúp thay đổi Sao chép địa phương thành sự thật –