SQLite из .net framework

#c# #.net #sqlite #frameworks

#c# #.net #sqlite #рамки

Вопрос:

Мой вопрос в том, как заставить SQLite работать в .NET framework, версия 4.7 , точка и где расположение базы данных меняется с каждым сайтом клиента, на котором я устанавливаю?

Вопрос:

Моя проблема с SQLite в .NET framework заключается в том, что я продолжаю получать DLL для SQLite не найден или отсутствует фабрика БД. Потратив 3-4 дня на изучение i-сети и перепробовав различные варианты, я не нашел решения. Может быть, я тот самый 5-фунтовый молоток — стекольный завод 8).

Вот предыстория:

Требование заключается в том, что вызывающий/Хост-это приложение VBA, называемая «dll» должна соответствовать функциональности COM — интерфейса.

Я создал открытую библиотеку DLL .NET COM, которая получает доступ к данным из БД с помощью .NET framework 4.7.2, EF 6.4.4 и СУБД SQL Express 2019, которая отлично работает. Проблема заключается в том, что ИТ-отделы клиентов принимают решение.

Есть 2 базы данных, одна база данных-это много для чтения, ни одной записи с 7 таблицами, в одной таблице более 950 000 строк. В другой БД есть 2 таблицы, обе читают много, иногда пишут. Обе базы данных совместно используются несколькими рабочими станциями.

Цель состоит в том, чтобы заменить SQL Express на SQLite. Причина: SQLite является автономным, без участия ИТ для установки, за исключением предоставления прав на установку в первую очередь 8).

Попробовал исходный файл XML/Json с набором данных памяти, производительность была низкой при загрузке, 10-30 секунд, и столкнулся с ошибками «не хватает памяти» при тестировании с минимальными спецификациями ПК, которые я нахожу у клиентов.

Обнаружил, что я могу осуществлять доступ к данным с помощью .NET 5 или 6 с ядром EF. Я могу передать местоположение файла(ов) БД по мере необходимости (БД будет находиться в локальной папке или даже на общем файловом ресурсе сервера, отличном от моей библиотеки DLL). На это ушло меньше суток, чтобы приступить к работе. Загвоздка вот в чем .NET framework не может вызывать библиотеки DLL .NET в моем тестировании.

В .NET 6 я вызываю библиотеку классов следующим образом:

 PostalDataLib tstDB = new(sysDBFQN, custDBFQN);  

Конструктор выглядит так:

 public PostalDataLib(string sysDbFQN, string cusDbFQN)  {  if (!File.Exists(sysDbFQN)) throw new ArgumentException("Invalid FQN, file not found", nameof(sysDbFQN));  if (!File.Exists(cusDbFQN)) throw new ArgumentException("Invalid FQN, file not found", nameof(cusDbFQN));  _custFQN = cusDbFQN;  _sysFQN = sysDbFQN;  _optsPostalData = new DbContextOptionsBuilderlt;PostalDBgt;().UseSqlite($"Data Source={sysDbFQN}").Options;  _optsCustData = new DbContextOptionsBuilderlt;PostalCustDBgt;().UseSqlite($"Data Source={cusDbFQN}").Options;  }  

Затем я открываю БД(ы) следующим образом:

 using PostalDB dbctx = new(_optsPostalData); using PostalCustDB dbctxcus = new(_optsCustData);  

Но я, похоже, не могу сделать это работоспособным в .NET framework 4.7.2.