2013-12-20 37 views
3

我正在开发一个使用VS2013的项目,该项目将针对x86或x64架构上的WP8,WinRT & Windows桌面平台。VS SQLite的项目/解决方案结构

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

我想知道是否有人可以指向我的资源/博客/样本,这些资源/博客/样本将告诉我如何创建一个数据层,使我能够针对上述所有内容,同时仍然尽可能多地保留通用代码库我的数据层?

我有每个SQLite“风味”和C#包装,System.Data.SQLite的vsix扩展。

提前许多感谢,

理查德

回答

3

你将不得不创建一个可移植类库,可以通过所有的这些平台上使用。

在这个可移植类库中,您将需要使用一个接口,并且您将不得不通过特定于平台的实现(WP8和WindowsRT将需要稍微不同的实现)。

但是,这是什么帮助我。可能还有一些其他的资源,但这绝对是最好的,也是让我做你想做的事情的最好的一个。

这是我遵循的一个系列(并且一路上做了一些改变),但它对我非常有帮助。 http://nicksnettravels.builttoroam.com/post/2013/06/02/Windows-(RT-and-Phone)-and-Sqlite-(Part-1).aspx

这里是从第4部分的系列一些片段:

创建一个单独的SQLitePCL项目并限定一组接口 ,其映射到由SQLite的网露出的类/方法。我 不会烦你与细节,但你可以从以下 图像只是一对夫妇将映射到类, 作为SQliteConnection,TableMapping和列的接口见。

关于平台实现:

对于每一个我们需要实现这些接口的平台。这是 实际上是采取SQLite.cs 和SQliteAsync.cs中定义的sqlite-net类,并修改它们以实现定义的 接口。这不像调整类 签名那样简单,以包括适当的界面,但它并不遥远。

我们需要为每个平台创建一个单独的类库,例如 SQLiteWinRT和SQLiteWP8。不要紧,你开始的平台 与(我做的电话实现第一),因为你会 参考使用在以前的文章中讨论的“添加为链接”技术 相同的类。你可能会想,如果我们只是 会将相同的类添加到这两个库中,为什么它们不能在共享的PCL中全部使用 。答案是在有条件的 编译语句在sqlite的网文件的顶部 - 这些 确定类是如何在各自的平台构建。

+0

这是一个很好的资源,一个谷歌搜索未能发现,谢谢。不幸的是,这个系列是不完整的,缺少桌面版本,但这无疑是向正确方向迈出的一步。 – Richard

+0

嗯,如果您的便携式类库目标.NET 4.5,那么你应该能够通过源码网接口的特定桌面的实现。也许你只需要将sqlite-net nuget包添加到桌面项目中即可。 –