2010-07-06 122 views
1

我想在C#中實現一個用於System.Data.SQLite的函數。實現SQLiteFunction接口非常簡單(可通過Internet查看示例)。System.Data.SQLite擴展模型

問題是我應該在哪裏編譯代碼?我是否需要將源代碼與System.Data.SQLite項目一起編譯?我有更好的選擇,以便我的函數將駐留在單獨的DLL中嗎?

澄清:功能應該不僅對我的C#代碼,同時也爲sqlite3客戶端(例如)是已知的,所以我將能夠同時執行該進來的明文INSERT命令來使用它。

回答

1

SQLite looks at all of your application's assemblies並識別具有[SQLiteFunction]屬性的類型。所以你可以把它們放在任何你喜歡的地方,只要這個程序集在你進行第一次SQLite調用時就已經加載了。

如果它只是一個或兩個函數,我會傾向於將它們放在您的應用程序的現有程序集中。

+0

對不起,但這裏是另一個(有趣的)問題:我想使它可用於即使是普通的文本/ SQL腳本。例如,如何在運行「sqlite3」時使其可加載? (希望我問的是正確的問題) – BreakPhreak 2010-07-06 08:32:03

+1

我認爲你需要修改sqlite3。 '[SQLiteFunction]'特定於.NET。 – 2010-07-06 08:39:35

0

有一個靜態方法SQLiteFunction.RegisterFunction,但文件說,這是......

...對於其中列舉組件目前不支持Compact Framework的一個解決方法。

另外,從我可以根據文檔告訴SQLiteFunctionAttribute

一個簡單的自定義屬性,使我們能夠很容易地找到用戶定義函數中加載的程序集和SQLite中初始化它們作爲連接製成。

使用反射,枚舉在當前應用程序域查找具有一個SQLiteFunctionAttribute屬性類的所有組件,並且相應地登記它們。

所有用戶定義的函數都從所有加載的程序集中自動加載。