SQLite的VS项目/解决方案结构

3

我正在使用VS2013开发一个项目,目标是WP8、WinRT和Windows桌面平台,支持x86或x64架构。

该项目需要本地数据访问/存储,我选择了SQLite。

我想知道是否有人能够指引我向资源/博客/示例,以展示如何创建数据层,使我能够针对上述所有平台,同时尽可能保持数据层的公共代码库?

我拥有每个SQLite“品味”的vsix扩展和C#包装器System.Data.SQLite

非常感谢您的帮助,

Richard

1个回答

3

您需要创建一个可由所有这些平台使用的可移植类库。

在该可移植类库中,您需要使用一个接口,同时还需要传入特定于平台的实现(WP8和WindowsRT需要略有不同的实现)。

但是这是帮助我的方法。可能还有其他资源,但这绝对是最好的,也是让我能够做到正是您要做的事情的方法。

这是我遵循的一系列步骤(并进行了一些更改),但它对我有很大帮助。 http://nicksnettravels.builttoroam.com/post/2013/06/02/Windows-(RT-and-Phone)-and-Sqlite-(Part-1).aspx

以下是该系列的第4部分的一些片段:

创建一个单独的SQLitePCL项目,并定义一组接口,这些接口映射到Sqlite-net公开的类/方法。我不会详细介绍,但您可以从以下图像中看到一些接口,这些接口将映射到类,例如SQliteConnection、TableMapping和Column。
关于平台实现:
对于每个平台,我们需要实现这些接口。这实际上是将在SQLite.cs和SQliteAsync.cs中定义的sqlite-net类进行修改以实现定义的接口的问题。这并不像调整类签名以包含适当接口那样简单,但也不远了。
我们需要为每个平台创建一个单独的类库,例如SQLiteWinRT和SQLiteWP8。从哪个平台开始(我首先完成了手机实现)并不重要,因为您将使用“添加为链接”技术引用相同的类,该技术在先前的帖子中讨论过。您可能会想,如果我们只是要将相同的类添加到两个库中,为什么它们不能全部位于共享的PCL中。答案在sqlite-net文件顶部的条件编译语句中 - 这些语句确定如何为各自的平台构建类。

这是一个非常好的资源,谷歌搜索无法发现,谢谢。不幸的是,该系列不完整且缺乏桌面版本,但它肯定是朝着正确方向迈出的一步。 - Richard
嗯,如果你的便携式类库目标是.NET 4.5,那么你应该能够传递针对桌面特定实现的sqlite-net接口。也许你只需要将sqlite-net nuget包添加到你的桌面项目中。 - Chris Leyva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接