Вы вряд ли будете больше это читать, но в вашем app.config (или, для вас, 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>
В частности, если вы используете sqlite в библиотеке, которая связана с вашим сайтом, вы должны добавить это в конфигурационный файл сайта, а не библиотеки! Это из-за того, как вы ' Повторная загрузка провайдера: по сути, вы определяете во время выполнения, какую dll загружать, используя строку «System.Data.SQLite», и поиск соответствующего провайдера выполняется с использованием настроек сборки записи.
Редактировать: Кстати, когда вы пишете библиотеку, которая имеет зависимость sqlite, вы можете избежать этой сложности. Вам не нужно использовать DbProviderFactories
для поиска sqlite во время выполнения; вы также можете взять зависимость от времени компиляции, которой легче управлять. Затем вы можете игнорировать приведенный выше раздел app.config и заменить все экземпляры:
DbProviderFactories.GetFactory("System.Data.SQLite").CreateConnection()
с
System.Data.SQLite.SQLiteFactory.Instance.CreateConnection()
Если вы это сделаете, вы используете простой библиотечный вызов для создания соединения, и вы не выбираете во время выполнения провайдера БД. Это может быть менее гибким, поскольку вы больше не можете обмениваться поставщиками данных через файл конфигурации, но для многих библиотек этого достаточно. К сожалению, если вы не контролируете библиотечный код, это не вариант.