基本的に、私はLINQデータベースコンテキストとそのモデルを持っています。通常どおり、DBが存在しない場合はSQLコンテキストでDBを作成します(コンテキストはシングルトンであり、それにアクセスするたびに、これがチェックされます)。
最初の起動時にDBにデータを追加すると、すべてがうまく機能します。ただし、アプリの最初の起動時にデータを挿入しないと、連続して起動すると次のようになります。
SqlCeException:指定されたテーブルが存在しません[TableName]
具体的に説明できるかどうかはわかりませんが、最初の起動時にデータを挿入しないと、アプリの2回目の起動時にLINQクエリを実行するとすぐに例外が発生します。最初の起動時にデータを挿入した場合、アプリの残りの期間はすべて問題ありません。DBを作成してDBコンテキストを導入するのに、データを挿入しないのはなぜ悪いことなのでしょうか。
これが私のLINQDBモデルです。
最初の起動時にデータを挿入しなかった場合、2回目の起動時に例外が発生します。
また、テーブルがLINQに存在するかどうかを確認するためのAPI呼び出しがないことにも気付くので、「これは正常に機能するはずです」と想定する必要がありますが、そうではありません。
何か案は?ありがとう!:)
更新:アプリの最初の起動時にデータを挿入しない場合、実際にはテーブルが作成されないことを.sdfファイルの分析で確認しました。私の考えでは:
- これはLINQ-to-SQLのバグです。テーブルが存在しない場合でもクラッシュすることはありませんが、テーブルを作成する必要があることはわかっています。または、ケースに対処し、データが挿入されたときにのみテーブルを作成します。
- 最初の起動時に常にダミーデータをSQLに挿入する必要があります。または...
- テーブルが存在するかどうかを確認し、存在しない場合は、LINQ-to-SQLにテーブルを作成させることでテーブルに反応します。しかし、どのように?