c# - 如何在Windows Phone中使用只读数据库?

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

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

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

The database is opened with a read-only connection. Can't perform post-initialization operations like re-building indexes and upgrading public tracking. Please re-open with a read-write connection.

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

这是我正在运行的查询,

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中使用只读数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16236805/

相关文章:

c# - LINQ to SQL - 在测试和开发数据库之间切换的最佳方式

c# - MVC URL.RouteUrl 删除 RouteValues 但 URL.Action 保留它们?

c# - 使用 Odata 服务并获取 JSON 格式的结果

c# - 'generic' 电话号码的基本正则表达式

silverlight - 如何注册以接收 Mvvm-Light 中的所有属性更改

c# - 为什么 Linq-to-sql 错误地删除了我的联合中的字段?

c# - 删除按钮 wpf 上的蓝色突出显示

c# - 属性值超出范围异常

silverlight - Windows Phone 中的应用栏图标按钮圆圈是否有替代方案?

Linq to SQL 和 Entity Framework 的区别?