2

ヘルパー アプリケーションを使用してデータベースを作成し、それをコンテンツとしてメイン アプリケーションにロードする方法を明確に説明している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
}
4

1 に答える 1

3

デスクトップでロケールまたは OS に関する問題が発生したため、デバイスでインデックスを再構築する必要があります。回避策として、データベース ファイルを 1 回 (開発中にのみ) 分離ストレージにコピーし、データベース コンテキストを開いてインデックスの再構築を許可し、分離ストレージからファイルを抽出し、更新された (再構築された) ファイルをコンテンツとして含め、そこから、読み取り専用で開くことができます。

于 2013-04-26T13:28:13.617 に答える