如何部署“SQL Server Express + EF”应用程序

Posted

技术标签:

【中文标题】如何部署“SQL Server Express + EF”应用程序【英文标题】:How to Deploy "SQL Server Express + EF" Application 【发布时间】:2014-11-08 06:40:03 【问题描述】:

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

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

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

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

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

我应该想办法在运行时更改连接字符串吗?! 或者有什么方法可以修改 installshield 项目并且它可以为我工作吗? (installshield是专业版) 您能建议我怎么做吗?

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

非常感谢。

【问题讨论】:

考虑使用LocalDB,安装起来会更方便。 msdn.microsoft.com/en-us/library/hh510202.aspx 非常感谢@VDohnal,但我更喜欢按原样部署应用程序,您知道解决此问题的另一种方法吗? 您可以像使用 LocalDB 一样部署它。 @VDohnal 谢谢,我应该怎么做才能使用 LocalDB 部署它?可以举个例子吗? 【参考方案1】:

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

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

    msiexec /i SqlLocalDB.msi /qn IACCEPTSQLLOCALDBLICENSETERMS=YES

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

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

    修改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,不过我没试过。

【讨论】:

似乎很难找到像这样的基本、简单的信​​息。谢谢。

以上是关于如何部署“SQL Server Express + EF”应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL Server Express 数据库为 Windows 来宾用户部署 WPF 应用程序

我可以像内置数据库一样使用我的桌面应用程序部署 SQL Server Express 吗?

我们可以为 SQL Server 和 SQL Server Express 提供通用的连接字符串吗?

SQL Server Express 和 SQL Server Compact Edition

如何将远程 SQL Server Express 数据库的部分副本复制到本地 SQL Server Express 数据库?

如何从 SQL Server DB 创建 SQL Server Express DB