2013-04-26 64 views
2

我跟着this article on MSDN,它清楚地描述了如何使用助手应用程序创建数据库,然后将其作为内容加载到主应用程序中。如果数据库是只读的(我的是),那么本文将描述如何将它加载到独立存储中。如何在Windows Phone中使用只读数据库?

但是这样做的,数据库(其中,选择等)上进行只读查询后,我得到下面的异常

打开数据库具有只读连接。无法执行重新构建索引和升级公共跟踪等后期初始化操作。请用读写连接重新打开。

这意味着数据库始终需要写入权限。那么如何按照文章中的建议以只读模式使用数据库?

下面是我在运行查询,

IQueryable dataQuery = null; 

// This line inside a switch statement which picks a particular table of clothing 
dataQuery = this.clothingDB.DressSizes; 

var dataBySize = dataQuery.Cast<IClothing>().Where(q => q.Size == size); 
foreach (Retailer retailer in dataBySize.Select(ds => ds.Retailer).Distinct()) { 
    /// ... Do something 
} 

回答

3

东西区域或OS明智发生在桌面上,现在需要的索引在设备上进行重建。解决方法是将数据库文件复制一次(仅限开发期间)到独立存储,打开数据库上下文以允许索引重建,从独立存储中提取文件,并将更新(重建)文件作为内容,然后从那里复制,您可以打开只读。

+0

啊对,我知道了,我在使用CompactView检查内容之前,将它们复制到我的项目。如果我复制生成的文件,而是检查数据库的单独副本,那么它的作品 - 谢谢! – Brendan 2013-04-26 14:14:34

+0

某人在部署本地数据库时如何处理模式或表更新?在发布商店更新之前,每次都需要遵循这些步骤吗? – WiteCastle 2014-01-12 17:20:29

+1

不,有一个特殊的DatabaseUpdater类来处理这个问题。 – ErikEJ 2014-01-12 17:51:00