4

我需要使用 WPF 应用程序部署 SQLite 文件。

  • 部署技术是ClickOnce
  • 包含实体框架以使用数据库。

我想列出一个在部署包含 SQLite 数据库文件的应用程序时必须考虑的事项。

到目前为止,我已经引用并将Copy Local 设置为 True用于:

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

.并且我有两个互操作,其中复制到输出目录我保留为默认复制始终

  • 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 中的路径不适用于已部署的应用程序,因为它们现在指的是我的本地文件夹。 如何修改它们

然后,我从这里检查了.net 应用程序的 SQLite 部署,是否应将以下内容添加到 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 回答