孜孜不倦的程序员:SQLite 内幕
2010-09-08 00:00:00 来源:WEB开发网通过添加一个指示 CLR 4.0 加载混合模式程序集的 app.config 文件,可以很容易地解决第一个问题:
<?xml version="1.0"encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
更大的问题是许多环境都不支持混合模式程序集,但无论如何,肯定会有一种适当的解决方法。 出于各种原因,全部托管解决方案是首选,但由于 SQLite DLL 是本机代码,因此这样做比较棘手。 最好是将 SQLite 代码库迁移到 C#,并尽可能地保持与原始 C 比较接近。
全部托管
再次重申一下,开源社区是有求必应的,在此示例中,它提供了一个名为“C#-SQLite”的项目,可从以下位置下载:code.google.com/p/csharp-sqlite。 很明显,该项目最初是一项通过迁移代码“学习 C# 语言的练习”,相关的 wiki 提供了有关作者如何管理该迁移的讨论,但现在我们已得到所需的确切结果,即:完全托管形式的 SQLite。
使用该项目时需要下载该项目的源代码,打开该项目,然后开始构建。 与许多开源项目一样,C#-SQLite 也由多个项目组成,但其中每个项目都包含在其自己的解决方案文件中,因此您可能需要打开多个解决方案。 (或者只是使用 MSBuild 从命令行开始构建,您可以使用其中最佳的那种方法。)
构建后,将 C#-SQLite 程序集 (Community.CSharpSQLite) 添加到项目;若要实现 ADO.NET 支持,还需要添加 C#-SQLite 客户端程序集 (Community.CsharpSqlite.SQLiteClient.dll)。 现在,SQLite 的所有功能可通过 ADO.NET 提供程序供我们使用,因此可以重新编写与前面显示的几乎完全相同的代码(请参阅图 6)。
赞助商链接