Sqliteは単純だと思っていましたが、それは私に苦労しています。 ado.netエンティティデータクラスを使用してsqliteデータベースに接続できるアプリケーションを作成したいだけです。
Windows XPを実行している仮想コンピュータでアプリケーションをテストするときに、この問題が発生します。アプリケーションは、現在のコンピューターと、ラップトップで展開すると正常に動作します。
これが仮想コンピュータで何が起こるかです:
接続しようとすると、次の例外が発生します。
私はこれについて話す多くの投稿があることを知っています、そしてそれらのほとんどはあなたが Sqliteのための.NETプロバイダーをダウンロードする必要があると言います。
Sqlite-netFx40-setup-bundle-x86-2010-1.0.79.0.exeをすでにインストールしていますが、同じ問題が発生します。私は何をすべきか?
私は何とかして接続を確立することができました:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
私のapp.configファイルに。
問題は、データを選択したり、データベースにレコードを挿入したりできないことです。新しいレコードを挿入しようとすると、次の例外が発生します。
タイプ「System.Data.SQLite.SQLiteFactory」のストアプロバイダーインスタンスで「GetService」メソッドを呼び出した後、nullが返されました。ストアプロバイダーが正しく機能していない可能性があります。
追加する必要がありました:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
私のアプリの設定ファイルに。そして今それは次のようになります:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
</configuration>
プログラムexeが配置されている出力ディレクトリに