2010-07-06 117 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属性类的所有组件,并且相应地登记它们。

所有用户定义的函数都从所有加载的程序集中自动加载。