在Win8 metro风格的应用程序中本地存储结构化数据



在桌面。net应用程序中,实现本地关系数据库的标准选择是使用SQL Server精简版,当然也有可能使用SQLite和其他第三方引擎。

.NET metro风格的应用程序有哪些可用的选项?SQL CE似乎不可用-有替代品吗?事实上,整个System.Data名称空间似乎消失了-所以没有LINQ到SQL或实体框架,要么?

HTML5 IndexedDB似乎可以用于Metro HTML/JS应用程序-可以从。net中使用吗?

显然,Metro应用程序中仍然可以使用可扩展存储引擎Win32 API(又名JET Blue)。c++程序可以直接通过#include <esent.h>使用它,. net程序必须使用P/Invoke。这并不提供SQL或任何其他类型的高级关系查询结构,但它提供了键查找、事务、每个表的多个索引和多字段索引。

让我们明确一下:SQL CE存在于Windows 8中。它不仅存在于程序文件中,而且在WindowsSystem32中似乎甚至比以前更嵌入。Windows7在system32中没有sqlcecompact40.dll,所以这肯定是新的。系统。Data和System.Data.Linq都存在于C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.5.

你可以手动添加对这些dll的引用,但让应用程序编译是命中或错过的。似乎如果你首先打开你的项目和什么都不做,你可以在任何地方添加对这些dll的引用并编译应用程序。如果你删除dll并尝试将它们添加回来,你会遇到"无法添加对'<4.5框架目录>的引用"。如果碰巧你不能通过Visual Studio添加它们,你可以简单地手动添加HintPath。

我的应用程序现在编译,但我也遇到了一个问题,链接AppX不能正常工作,它给出了一个神秘的"有效载荷不能包含2个相同的dll"类型的消息。就像它试图包括32位(我链接的那个)和64位在最后一分钟。它包括我没有手动触摸的dll,如System. data . oracleclient或System。所以它肯定是构建过程中的一些工件,我还没有再看到。

我现在处理的主要问题是如何生成一个正确的连接字符串,因为它不会初始化正确没有一个。SQL CE可能仍在寻找硬编码的C:引用,因此ApplicationData示例可能无法按预期工作。我可能会尝试在Win7中制作SQL CE 4数据库,转移到Win8并简单地在本地引用它们,但我也在同一条船上。This | | close!

请随意评论你遇到的任何问题,如果有人愿意共享资源,我绝对愿意进行一些离线合作。这绝对是一个茂密的野兽森林,单独行动更具挑战性。

最新更新