【问题标题】:How to use a read only database in windows phone?如何在 windows phone 中使用只读数据库?
【发布时间】:2013-04-26 12:44:44
【问题描述】:

我已关注this article on MSDN,它清楚地描述了如何使用帮助应用程序创建数据库,然后将其作为内容加载到主应用程序中。如果数据库是只读的(我的是只读的),文章描述了如何不需要将它加载到隔离存储中。

但是在执行此操作并在数据库上执行只读查询(Where、Select 等)之后,我得到以下异常

数据库以只读连接打开。无法执行初始化后的操作,例如重建索引和升级公共跟踪。请使用读写连接重新打开。

这意味着数据库总是需要写访问。那么如何按照文章的建议以只读模式使用数据库?

这是我正在运行的查询,

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
}

【问题讨论】:

    标签: c# windows-phone-7 linq-to-sql sql-server-ce


    【解决方案1】:

    桌面上发生了一些区域设置或操作系统方面的问题,现在需要在设备上重建索引。解决方法是将数据库文件复制一次(仅在开发期间)到隔离存储,打开数据库上下文以允许索引重建,从隔离存储中提取文件,并将更新(重建)文件作为内容包括在内,然后从那里,您可以只读方式打开。

    【讨论】:

    • 嗯,我明白了,我在将内容复制到我的项目之前使用 CompactView 检查内容。如果我复制生成的文件并检查数据库的单独副本,那么它可以工作 - 谢谢!
    • 部署本地数据库时如何处理架构或表更新?每次向商店发布更新之前都需要遵循这些步骤吗?
    • 不,有一个特殊的 DatabaseUpdater 类来处理这个问题。
    • 谢谢!这让我发疯,但解决方法挽救了一天:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多