Поделиться через


Модули

SQLite поддерживает загрузку расширений во время выполнения. Расширения включают дополнительные функции SQL, параметры сортировки, виртуальные таблицы и многое другое.

.NET включает дополнительную логику для поиска собственных библиотек в дополнительных местах, таких как ссылки на пакеты NuGet. К сожалению, SQLite не может использовать эту логику. SQLite напрямую вызывает API платформы для загрузки библиотек. Из-за этого может потребоваться изменить PATHLD_LIBRARY_PATHпеременные среды или DYLD_LIBRARY_PATH переменные среды перед загрузкой расширений SQLite. В GitHub есть пример, демонстрирующий поиск двоичных файлов для текущей среды выполнения в указанном пакете NuGet.

Чтобы загрузить расширение, вызовите метод LoadExtension. Microsoft.Data.Sqlite обеспечит загрузку расширения даже при закрытии и повторном открытии соединения.

// Load the SpatiaLite extension
connection.LoadExtension("mod_spatialite");

var command = connection.CreateCommand();
command.CommandText =
@"
    SELECT spatialite_version()
";
var version = (string)command.ExecuteScalar();

Console.WriteLine($"Using SpatiaLite {version}");

Примечание.

Метод LoadExtension был добавлен в версию 3.0.

См. также