c# - 如何部署 "SQL Server Express + EF"应用程序

标签 c# sql sql-server wpf entity-framework

这是我第一次部署使用 SQL Server Express 数据库的应用程序。 我首先使用实体​​框架模型来联系数据库。 我创建了一个带有 Install Shield 的安装向导来安装应用程序。

这些是我在目标计算机上安装应用程序的步骤:

  1. 安装 MS SQL Server Express (DEST)
  2. 使用安装文件 (DEST) 安装程序
  3. 从 SQL 服务器分离数据库并将相关的 .mdf、.ldf 文件复制到目标计算机。
  4. 使用 SQL Server Management Studio 在目标计算机中附加数据库文件。

我知道服务器名称和 SQL 名称实例不同,我的程序无法使用旧连接字符串正确运行。

我是初学者,我想知道我应该在目标计算机上做什么才能使程序运行?

  • 我是否应该找到一种在运行时更改连接字符串的方法?!
  • 或者有什么方法可以修改 installshield 项目并且它可以为我完成这项工作吗? (installshield为专业版)
  • 你能建议我做什么吗?

在我的搜索中,我看到 WiX 可以做到这一点,但我发现它很复杂,而且我没有足够的时间来学习它。我需要尽快部署该应用程序。

非常感谢。

最佳答案

在项目中使用 LocalDB 的一些提示:

  1. 下载 SQL Express LocalDB 2014 here .您可以使用这样的单个命令静默安装它

    msiexec /i SqlLocalDB.msi /qn IACCEPTSQLLOCALDBLICENSETERMS=YES

  2. 将您的 .MDF 包含在您的 VS 项目中并将属性设置为 Copy if newer以便它在构建过程中被复制到您的 bin 文件夹中,以便它自动包含在安装程序中。

  3. 在您的应用程序启动时(在 app.cs 中)检查数据库文件是否存在于所需位置(例如 %PUBLIC%\YourApp\Data )( WPF Desktop Application with MDF used locally for all local users )。如果没有,请将 .mdf 文件从您的应用安装目录复制到您的数据目录。

  4. 修改app.config这样您的连接字符串看起来像: <add name="MyContextLocalDB" connectionString="Server=(localdb)\MSSQLLocalDB; Integrated Security=True; AttachDBFilename=|DataDirectory|\MyDatabase.mdf; Connection Timeout = 30" providerName="System.Data.SqlClient" />

连接超时应该增加,因为 LocalDB exe 在您第一次尝试连接时启动。

您还可以使用 Database.CreateIfNotExists , 但我从未尝试过。

关于c# - 如何部署 "SQL Server Express + EF"应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25836156/

相关文章:

mysql - 统计mysql文本中的重复单词

sql-server - 将多行默认值插入表中

sql - MS SQL Server 与 Management Studio - 如何使用其数据编写表脚本(作为插入语句)?

c# - MVVM:按钮保持事件命令

C# 在写入文件时忽略字符串中的\n

c# - 按顺序从 SQL 行中读取数据

mysql - 关于重复 key 更新 - 需要帮助

c# - 检查正在运行的特定进程的快速方法

MySQL 5.7 准备好的语句更新了错误的时间戳列

mysql - SQL - 字段列表中的列不明确