Модель расширения System.Data.SQLite - PullRequest
1 голос
/ 06 июля 2010

Я хочу реализовать функцию для System.Data.SQLite в C #.Реализовать интерфейс SQLiteFunction просто (см. Примеры через Интернет).

Вопрос в том, куда мне поместить скомпилированный код?Нужен ли исходный код для компиляции вместе с проектом System.Data.SQLite?У меня есть лучший вариант, чтобы мои функции находились в отдельной DLL?

Уточнение: Предполагается, что функция известна не только для моего кода на C #, но и для sqlite3 client (например), поэтому я смогу использовать его при выполнении команд INSERT, которые приходят в виде простого текста.

Ответы [ 2 ]

1 голос
/ 06 июля 2010

SQLite просматривает все сборки вашего приложения и распознает типы, имеющие атрибут [SQLiteFunction].Таким образом, вы можете размещать их где угодно, если эта сборка уже загружена к тому времени, когда вы делаете свой первый вызов SQLite.

Если это всего одна или две функции, я был бы склонен поместить их в однусуществующих сборок вашего приложения.

0 голосов
/ 06 июля 2010

Есть статический метод SQLiteFunction.RegisterFunction, но в документации сказано, что это ...

... обходной путь для Compact Framework, в котором перечисление сборок в настоящее время не поддерживается.

Кроме того, из того, что я могу сказать на основе документации, до SQLiteFunctionAttribute:

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

и

Используя отражение, перечислите все сборки в текущем домене приложения, ищите классы, имеющие атрибут SQLiteFunctionAttribute, и регистрируйте их соответствующим образом.

все пользовательские функции загружаются автоматически из всех загруженных сборок.

...