Компьютер конечного пользователя Не удается найти System.Data.SQLite

Линкпад v4.26

Этот процесс отлично работает на моем Dev Box. Я вручную скопировал в папку установки конечного пользователя linqpad.exe, linqpad.exe.config, custom.dll, system.data.sqlite.dll и system.data.sqlite.linq.dll.

Я создаю соединение, нажимаю переключатель. Используйте контекст типизированных данных из своей собственной сборки. Выберите Entity Framework, выберите «Далее», перейдите к моей пользовательской dll. Выберите радиокнопку Provider для другого. System.Data.SQLite не находится в раскрывающемся списке.

Я запустил установщик sqlite setup-bundle на своей машине Dev, чтобы установить sqlite в GAC для поддержки дизайнера VS2010.

Спасибо,

Джон


person John    schedule 20.12.2012    source источник


Ответы (2)


В раскрывающемся списке поставщиков баз данных указано System.Data.Common.DbProviderFactories.GetFactoryClasses(). Если SQLite нет в списке, значит, он не зарегистрирован в machine.config. Однако LINQPad не запрещает вам вводить имя поставщика вручную, как при создании строки подключения Entity Framework.

person Joe Albahari    schedule 21.12.2012
comment
Это должно объяснить, почему я также должен поместить это в свой класс app.config: тип = System.Data.SQLite.SQLiteFactory, System.Data.SQLite/›‹/DBProviderFactories› - person John; 21.12.2012
comment
говорил слишком рано... когда я добавляю вышеуказанное в файл linqpad.exe.config, я вижу System.Data.SQLite в раскрывающемся списке, но когда нажимаю кнопку «Тест», linqpad говорит, что у меня есть действительное соединение с внутренним исключением указанного хранилища провайдер не может быть найден в конфигурации или недействителен. - person John; 03.01.2013
comment
Попробуйте также добавить это в файл с именем linqpad.config — это конфигурация для ваших запросов, а не сам LINQPad. - person Joe Albahari; 04.01.2013
comment
Я получаю Исключение было выброшено целью вызова. Затем я удалил файлы System.dat.sqlite.dll, которые находились в текущем каталоге, и повторно запустил программу установки sqlite. Я проверил разделы ‹DbProviderFactories›, обратите внимание, что они имеют атрибут PublicKeyToken. Я попробовал Linqpad с ‹DBProviderFactories› и без него в файле linqpad.config. Каждый раз, когда я получаю всплывающее окно Не удалось найти или загрузить зарегистрированный поставщик данных .NET Framework. Я собираюсь повторить установку SQLite, используя только что настроенный пакет установки. Пакет включает поддержку времени разработки VS2010 и предназначен только для разработчиков. - person John; 04.01.2013
comment
Кстати, на моей машине разработчика Windows 7 x64 Linqpad автоматически определяет для меня строку подключения после небольшой задержки. На клиентской машине XP он никогда не отображает его, я предполагаю, что это связано с любой из вышеуказанных проблем. - person John; 04.01.2013
comment
Запуск sqlite-netFx40-setup-bundle-x86-2010-1.0.82.0.exe позволил мне установить флажок «Установить» в глобальном кэше сборок GAC. Оно работает!! Вам действительно нужно иметь раздел DBFactory в linqpad.config, иначе вы получите всплывающее окно, соединение с базой данных действительно... и т. д. Забавно, как мне не нужен этот файл в моем окне Dev. Хотел бы я знать, почему установка без GAC не работает. - person John; 04.01.2013

+1, потому что, хотя я вижу это в раскрывающемся списке, оно не кажется действительным.

Теперь я сделал следующее безрезультатно:

  1. Запустил sqlite-netFx40-Setup-x86-2010-1.0.82.0.exe на клиентской машине.
  2. Скопируйте/вставьте разделы readme.htm в файл Linqpad.exe.config.
  3. Скопировал System.Data.SQLite.dll из Program Files\System.data.sqlite в каталог приложения, в котором я установил Linqpad.
  4. Запустил linqpad, выбрал моего пользовательского провайдера. Он показывает все таблицы, но как только я пытаюсь выполнить любой запрос, я получаю исключения.
person John    schedule 03.01.2013