我在Windows Phone Mango的visual studio中创建了一个应用程序,我需要一个字典数据库。我知道如何创建它,如何插入,更新和删除。
我有一个300k xml的数据文件,我想在该数据库中预加载(解析和插入 - 这不是问题)到应用程序中。问题是我不想在安装应用程序时这样做。我希望预先安装在隔离数据存储中的数据库文件。我也需要该系统,因为xml内容可能每3个月更改一次。但是,每次安装应用程序时,在手机上处理一个300k xml的文件 - 听起来很愚蠢...我可以预先安装数据库......
PS。 linq中有没有合适的XML助手?用于缓存xml文件,例如..
答案 0 :(得分:6)
这并没有解决您使用Linq的XML帮助程序的情况,但处理此问题的一种好方法是单独创建数据库(如在Console应用程序项目中)并使用您需要的数据加载它。接下来,将SDF文件作为内容复制到Windows Phone项目中。最后,在部署应用程序时,将数据库从部署位置复制到隔离存储中。这样,您就不必处理XML文件或类似的东西。从部署位置复制到隔离存储是一件简单的事情。我正在撰写一篇(很长篇)博客文章,讨论所有相关内容,但您需要的核心代码是:
// Obtain the virtual store for the application.
IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication();
// Create a stream for the file in the installation folder.
using (Stream input = Application.GetResourceStream(new Uri("ReferenceDB.sdf", UriKind.Relative)).Stream)
{
// Create a stream for the new file in isolated storage.
using (IsolatedStorageFileStream output = iso.CreateFile("ApplicationDB.sdf"))
{
// Initialize the buffer.
byte[] readBuffer = new byte[4096];
int bytesRead = -1;
// Copy the file from the installation folder to isolated storage.
while ((bytesRead = input.Read(readBuffer, 0, readBuffer.Length)) > 0)
{
output.Write(readBuffer, 0, bytesRead);
}
}
}
然后您可以正常连接数据库并整天读/写数据:
var db = new MyDataContext("Data Source = 'isostore:/ApplicationDB.sdf';");
您可以在https://github.com/ChrisKoenig/ReferenceDatabase
从我的GitHub存储库下载一些示例代码-Chris