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

时间:2011-09-17 20:42:26

标签: database windows-8 microsoft-metro

在桌面.NET应用程序中,实现本地关系数据库的标准选项是使用SQL Server Compact Edition,然后当然有可能使用SQLite和其他第三方发动机。

.NET Metro风格的应用程序有哪些可用选项? SQL CE似乎不可用 - 任何替换?事实上,整个System.Data命名空间似乎已经消失了 - 所以没有LINQ to SQL或Entity Framework?

对于Metro HTML / JS应用程序似乎可用的HTML5 IndexedDB怎么样?可以以某种方式从.NET使用吗?

2 个答案:

答案 0 :(得分:2)

显然,Extensible Storage Engine Win32 API(又名“JET Blue”)仍可在Metro应用中使用。 C ++可以通过#include <esent.h>直接使用它。 .NET应用程序必须使用P / Invoke。这不会给SQL或任何其他类型的高级关系查询构造,但它确实提供了键查找,事务,每个表的多个索引和多字段索引。

答案 1 :(得分:0)

让我们明确一点:SQL 8存在于Windows 8中。它不仅存在于程序文件中,而且存在于Windows \ System32中,看起来甚至比以前更强<嵌入。 Windows7在system32中没有sqlcecompact40.dll,所以这绝对是新的。 System.Data和System.Data.Linq都存在于C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5。

您可以手动添加对这些dll的引用,但是要编译的应用程序是命中还是未命中。似乎如果你第一次打开你的项目并且什么都不做,你可以在任何地方添加对这些dll的引用并编译应用程序。如果您删除dll并尝试将它们添加回来,则会遇到“对'&lt; 4.5 framework framework&gt;'的引用”无法添加。如果有可能您无法通过Visual Studio添加它们,您可以轻松地手动添加HintPath。

我的应用程序现在编译,但我也遇到了一个问题,其中链接AppX无法正常工作,它给了一个神秘的“有效载荷不能包含2个相同的dll”类型的消息。就像它试图在最后一分钟包括32位(我链接的那个)和64位。它包括我没有像System.Data.OracleClient或System.Transactions手动触摸的DLL,因此它绝对是我尚未再次看到的构建过程中的一些工件。

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

请随时评论您遇到的任何问题,如果有人想要集中资源,我肯定会对某些离线协作感到失望。这绝对是一片茂密的野兽森林,单独行动证明它更具挑战性。

相关问题