在开发Windows Phone 7应用时,经常使用SQL CE数据库,并利用LINQ to SQL进行数据操作。但可能没有听说过如何将隔离存储中创建的.SDF文件提取到本地计算机并查看其内容。这对于调试应用程序和确保数据库设置完全符合预期非常重要。因此,本文将介绍如何做到这一点。
本教程需要一个使用本地数据库的示例应用程序。如果已经在Mango应用程序中使用了本地数据库(SQL CE),那么可以跳过这一部分,否则请下载MSDN上的“Local Database Sample”。
以下是MSDN页面的摘录:
在Windows Phone OS 7.1中,可以使用LINQ to SQL在应用程序的隔离存储容器中存储关系数据。这个示例是一个待办事项列表应用程序,它使用多表本地数据库。列表中显示的项目将从本地数据库中添加、更新和删除,它们将在应用程序启动之间持久保存。有关开发此应用程序的分步信息,请参见“如何:为Windows Phone创建带有MVVM的本地数据库应用程序”。
下载示例:
可以看到定义数据库名称的代码在App.xaml.cs中,它被称为ToDo.sdf:
// 指定本地数据库连接字符串。
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 PhoneSDK 7.1 RC。
获取Mango的Silverlight Toolkit。
如果想使用这个示例,请从MSDN下载“Local Database Sample”。
运行应用程序并输入一些数据。屏幕看起来像这样:
这应该足够使用的数据。
保持模拟器运行,并导航到属性 -> 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"
应该:
这是命令窗口的样子:
注意:一直收到它已经被使用的消息,但实际上它还是构建了文件。
导航到之前指定的目录,将看到.SDF文件从IsolatedStorage中提取出来。很酷,对吧?
然后切换到Visual Studio 2010中的服务器资源管理器,让将SDF添加到项目中。右键单击数据连接,然后选择“添加连接”。
确保选择的数据源是:SQL Server Compact 3.5,然后点击浏览器并选择刚刚创建的.SDF文件。
请注意,无法使用SQL Server Compact 4.0数据源与此示例一起工作。
点击确定,应该看到在Mango中创建的数据库(它曾经生活在隔离存储中)现在在Visual Studio中。
现在如果右键单击一个表格,然后可以“显示表格数据”,就像习惯于使用普通的SQL Server数据库一样。
正是第一张屏幕截图中显示的数据!