5

Tôi không thể tải Trình điều khiển SQLite hoạt động trong phiên làm việc của mình.FluentNhibernate và SQLite

Tôi đã tải về SQLite 1.0.48 từ http://sqlite.phxsoftware.com/

Tôi đã thêm các tài liệu tham khảo để System.Data.SQLite trong dự án thử nghiệm của tôi.

public static IPersistenceConfigurer GetSqlLiteConfigurer() 
     { 
      try 
      { 
       return SQLiteConfiguration 
       .Standard 
       .InMemory(); 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
     } 

Đây là cách tôi tạo ra Configurer

Vấn đề là khi tôi xây dựng sessionfactory của tôi, tôi nhận được lỗi sau:

NHibernate.HibernateException: The IDbCommand and IDbConnection implementation in the assembly System.Data.SQLite could not be found. Ensure that the assembly System.Data.SQLite is located in the application directory or in the Global Assembly Cache. If the assembly is in the GAC, use <qualifyAssembly/> element in the application configuration file to specify the full name of the assembly. 
at NHibernate.Driver.ReflectionBasedDriver..ctor(String driverAssemblyName, String connectionTypeName, String commandTypeName) 
at NHibernate.Driver.SQLite20Driver..ctor() 

tôi đã cố gắng thay đổi của phiên bản SQLite nhưng không khắc phục sự cố.

Tôi không thể tìm thấy vấn đề là gì và tôi đã làm việc này trong 2 ngày nay.

Hãy cho tôi biết nếu bạn cần thêm thông tin.

Cảm ơn sự giúp đỡ!

Charles

Trả lời

7

Tôi đã khắc phục sự cố của mình bằng cách lấy tệp System.Data.SQLite.dll nằm trong Kho lưu trữ SENT FluentNHibernate.

Điều này hiện đang hoạt động rất tốt.

tôi nên đã kiểm tra trước đây;)

+0

Cảm ơn. Điều này giải quyết vấn đề cho tôi. – statenjason

+0

Hiện có sẵn dưới dạng Gói NuGet http: // nuget.org/List/Packages/SQLitex64 –

10

Khi tôi chạy vào vấn đề này nó được gây ra bằng cách chạy có bộ tài sản xử lý ứng dụng của tôi để anycpu và chạy trên một hệ thống 64bit. Để khắc phục sự cố, tôi đặt thuộc tính bộ xử lý ứng dụng của mình thành x86. Tôi không nghĩ rằng System.Data.SQLite.dll hỗ trợ chạy trong quá trình x64.

+2

System.Data.SQLite.dll * là * có sẵn cho x64, nó chỉ là một assembly (được bao gồm trong thư mục x64) –

+0

+1 điều này giải quyết vấn đề cho tôi (thậm chí sử dụng x64 dll từ SQLite dường như không hoạt động) – Ben

+0

làm việc cho tôi quá – Kevin

0

Tôi đang gặp vấn đề tương tự trên máy xây dựng. Nó hoạt động tốt khi tôi mở dự án với Visual Studio, nhưng khi tôi chạy mstest.exe nó không thành công với các lỗi trên. Nó cũng không thành công trên máy phát triển cục bộ của tôi khi tôi chạy bằng dòng lệnh. Process Monitor cho thấy không có nỗ lực để xác định vị trí tập tin bằng mstest.exe.

Máy xây dựng là 32 bit, máy cục bộ của tôi là 64 bit. Việc lắp ráp chúng tôi đang sử dụng là một trong những từ thân cây NHibernate Fluent.

CẬP NHẬT: Đã tìm ra - mstest.exe không sao chép tất cả các hội đồng khi nó được chạy từ dòng lệnh. Tôi đã cập nhật localtestrun.config để bao gồm chúng trong Deployment. Không chắc chắn lý do tại sao các hành vi khác với IDE và dòng lệnh thử nghiệm Á hậu.

+0

Xin chào, tôi đang gặp sự cố chính xác ! Máy xây dựng của tôi cũng là 64-bit, đó là sự khác biệt duy nhất. Các thử nghiệm của tôi không thành công khi chạy cục bộ, thông qua dòng lệnh, nhưng đi qua từ VS. Bạn đã khắc phục điều này như thế nào? Những gì bạn có nghĩa là bởi "Tôi cập nhật localtestrun.config để bao gồm chúng dưới Deployment" và làm thế nào để tôi làm điều đó xin vui lòng? – iamserious

+0

@iamserious nếu tôi nhớ lại không phải tất cả các hội đồng yêu cầu đã được sao chép. Sử dụng các thiết lập triển khai trong cấu hình chạy thử nghiệm của bạn, bạn có thể đảm bảo tất cả các bit cần thiết có để chạy nó. –

+0

Colin, được rồi, cảm ơn! – iamserious

1

Kiểm tra, nếu bạn đang sử dụng 4.0 làm khung mục tiêu của mình. Trình điều khiển ADO hiện tại (1.0.66) chỉ hỗ trợ 3.5.

Các vấn đề liên quan