Bạn đang khó để được đọc sách này nữa, nhưng bạn đang bỏ lỡ những điều sau đây trong app.config của bạn (hoặc, đối với bạn, web.config):
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>
Cụ thể, nếu bạn sử dụng sqlite trong một thư viện được liên kết vào trang web của bạn, bạn phải thêm điều này vào tệp cấu hình của trang web - không phải thư viện! Điều này là do cách bạn tải nhà cung cấp: về cơ bản, bạn đang xác định thời gian chạy mà dll tải, sử dụng chuỗi "System.Data.SQLite" và định vị nhà cung cấp thích hợp được thực hiện bằng cách sử dụng cài đặt của mục nhập hội,, tổ hợp.
Edit: Bằng cách này, khi bạn đang viết các thư viện mà có một dependancy SQLite, bạn có thể tránh sự phức tạp này. Bạn không cần sử dụng DbProviderFactories
để tìm kiếm sqlite khi chạy; bạn cũng có thể sử dụng sự phụ thuộc thời gian biên dịch, có thể dễ dàng hơn trong việc quản lý. Sau đó, bạn có thể bỏ qua phần app.config trên, và thay vào đó thay thế tất cả các trường hợp:
DbProviderFactories.GetFactory("System.Data.SQLite").CreateConnection()
với
System.Data.SQLite.SQLiteFactory.Instance.CreateConnection()
Nếu bạn làm như vậy, bạn đang sử dụng một cuộc gọi thư viện đơn giản để tạo ra các kết nối và không có lựa chọn thời gian chạy nào của nhà cung cấp db. Điều đó có thể ít linh hoạt hơn vì bạn không còn có thể trao đổi các nhà cung cấp dữ liệu thông qua tệp cấu hình, nhưng đối với nhiều thư viện là đủ. Thật không may, nếu bạn không kiểm soát mã thư viện, đây không phải là một tùy chọn.
Nguồn
2009-07-11 07:44:23
Xin chào, cảm ơn bạn đã trả lời. Vâng, tôi đã nhìn thấy blog của Phil. Tôi có thể triển khai ứng dụng ASP.NET MVC bình thường. Đó là sự kết hợp với Entity Framework + SQLite có vấn đề. Tôi đã tăng cả System.Data.Entity.dll và System.Data.SQLite.dll vào thư mục bin. Chưa có may mắn. – Pompair
Hmmm. Có phải họ trong phần hội đồng của bạn trong cấu hình web? – tvanfosson