从WP7 Mango的Isolated Storage中提取SQL CE DB
了解如何从Windows Phone 7 Mango的Isolated Storage中提取SQL CE DB。
引言
到目前为止,你们大多数人都听说过 Windows Phone 7 - Mango 版本将支持使用 Linq to SQL 的本地数据库(SQL CE)。但你们可能还没有怎么听说过如何将隔离存储中创建的 *.SDF 文件提取到本地计算机并查看其内容。我认为这对调试应用程序和确保数据库设置完全符合我的要求至关重要。所以,今天我们就来做这件事。
开始一个示例应用程序

在本教程中,我们将需要一个使用本地数据库的示例应用程序。如果您已经在 Mango 应用程序中使用本地数据库(SQL CE),则可以跳过此部分,否则请继续下载 MSDN 上的“本地数据库示例”。
下面是 MSDN 页面的摘录
在 Windows Phone OS 7.1 上,您可以使用 LINQ to SQL 将关系数据存储在位于应用程序隔离存储容器中的本地数据库中。此示例是一个待办事项列表应用程序,它使用多表本地数据库。列表中显示的项目会从本地数据库中添加、更新和删除,并在应用程序启动之间持久化。有关开发此应用程序的步骤信息,请参阅如何:为 Windows Phone 创建具有 MVVM 的本地数据库应用程序。
数据库结构
我们在 App.xaml.cs 中看到定义数据库名称的代码。它被简单地称为 ToDo.sdf
// Specify the local database connection string.
string DBConnectionString = "Data Source=isostore:/ToDo.sdf";
以及创建表并定义列的代码
[Table]
public class ToDoItem
{
[Column( IsPrimaryKey = true )]
public int ToDoItemId { get; set; }
[Column]
public string ItemName { get; set; }
[Column]
public bool IsComplete { get; set; }
[Column]
public int _categoryId { get; set; }
[Column]
private Binary _version { get; set; }
}
请注意,为了简化此示例,我删除了所有与 MVVM 相关的代码。如果您想查看代码,请参考 Model –> ToDoDataContext.cs。此示例还有一个名为 ToDoCategory
的表,但未包含在此教程中。
现在我们已经了解了数据库的外观,让我们看看如何将 *.SDF 文件从隔离存储提取到我们的本地 PC。
如果还没有,请获取所需的工具。
- 下载并安装 Windows Phone SDK 7.1 RC(如果您尚未安装)。
- 获取 Mango 的 Silverlight 工具包.
- 如果您想使用此示例,请从 MSDN 下载“本地数据库示例”。
继续运行应用程序并输入一些数据。我的屏幕看起来像这样

这应该足够我们使用了。
保持模拟器运行,然后导航到 Properties –> WMAppManifest.xml 文件。打开记事本并将 ProductId
复制粘贴进去。

现在导航到“C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\IsolatedStorageExplorerTool”并运行以下命令
ISETool.exe ts xd 8c0be8e6-11c1-44d8-be92-57f06cf52240
"C:\Users\MichaelCrump\Desktop\IsoStore"
您应该
- 用您自己的 GUID 替换 GUID。
- 为文件输出指定一个合适的位置。
这是我的命令窗口的样子

注意:我一直收到“已在使用中”的消息,但它实际上还是构建了文件。
导航到您之前指定的目录,您将在 IsolatedStorage
中看到您的 *.SDF 文件。很酷吧?

切换到 Visual Studio 2010 中的 Server Explorer,然后让我们将该 SDF 添加到项目中。右键单击 Data Connection,然后选择“Add Connection”。

确保将 Data Source 选择为:SQL Server Compact 3.5,然后单击 Browser 并选择刚刚创建的 *.SDF 文件。
请注意,我无法使 SQL Server Compact 4.0 Data Source 与此示例一起工作。

单击 OK,您应该能在 Visual Studio 中看到您在 Mango 中创建(并存储在隔离存储中)的数据库。

现在,如果您右键单击一个表,然后可以选择“Show Table Data”,就像我们习惯使用普通 SQL Server 数据库一样。

与第一个屏幕截图显示的数据完全一致!

这里有一点需要注意,这仅仅是查看隔离存储中内容的一种方式。如果您打算修改 IsolatedStorage
,您可能需要阅读有关使用同一工具进行修改的内容。
结论
当然,IsolatedStorageExplorerTool
不仅用于 SQL CE 数据库。基本上,您应用程序中的任何隔离存储内容都可以提取。它也可以与设备配合使用,并允许您从本地 PC 将文件添加到 IsolatedStorage
。随着 Windows Phone 的每一次发布,我们都看到工具变得越来越好。我非常期待看到未来版本会有什么内容。希望这能帮助到那些正在调试 Windows Phone 7 应用程序 bug 的人。下次见,再次感谢阅读。
