4

WPF アプリケーションで SQLite ファイルをデプロイする必要があります。

  • 配置手法はClickOnceです。
  • データベースを操作するためにEntity Frameworkが含まれています。

SQLite データベース ファイルを含むアプリケーションをデプロイする際に考慮しなければならないことのリストを作成したいと思います。

これまでのところ、以下についてCopy Local を参照して Trueに設定しました。

  • System.Data.SQLite
  • System.Data.SQLite.Linq

.そして、出力ディレクトリへのコピーをデフォルトの常にコピーのままにした2つの相互運用性があります

  • SQLite.Interop.dll (x86)
  • SQLite.Interop.dll (x64)

app.config ファイルには次のものがあります。

<applicationSettings>
    <MyApp.MySettings>
       <setting name="connStrSQLite" serializeAs="String">
           <value>data source="C:\MyFolder\MySQLiteFile.sqlite3"</value>
       </setting>
    </MyApp.MySettings>
</applicationSettings>

<connectionStrings>
    <add name="MyEntities" connectionString="metadata=res://*/Model.ORM.MyModel.csdl|res://*/Model.ORM.MyModel.ssdl|res://*/Model.ORM.MyModel.msl;provider=System.Data.SQLite;provider connection string='data source=&quot;C:\MyFolder\MySQLiteFile.sqlite3&quot;'" providerName="System.Data.EntityClient" />
</connectionStrings>

app.config では、パスが現在ローカル フォルダーを参照しているため、デプロイされたアプリケーションでパスが機能していないと思います。 それらを変更するには

次に、たとえば here SQLite deployment for .net applicationから、次を app.config ファイルに追加する必要があることを確認しました。

<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>

他に何か?

4

1 に答える 1

2

接続文字列について - ClickOnce インストールの場合は |DataDirectory| を使用する必要があります。フル パスの代わりの置換 - ランタイムはこれを適切なローカル パスに自動的に変換します。

<connectionStrings>
    <add name="MyContext" connectionString="DataSource=|DataDirectory|Mydb.sdf" providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>
于 2013-09-05T12:19:18.510 に答える