【问题标题】:How should I generate Database table on a fresh application install?我应该如何在全新的应用程序安装上生成数据库表?
【发布时间】:2011-01-06 15:34:29
【问题描述】:

我一直在使用连接到 SQL 2008 数据库的基于 poco 的 linq-to-sql 存储库来开发基于 ASP.NET MVC2 的 CMS。

我的 CMS 即将完成,现在我正在考虑部署。理想情况下,我希望安装过程是这样的:

  1. 将 CMS 解决方案复制到服务器位置
  2. 创建空数据库
  3. 将 web.config 中的 db 连接字符串更改为新数据库
  4. 运行脚本创建数据库表(包括关系、约束和默认数据)

我不知道从哪里开始这种项目。我使用存储过程的经验有限。如果可以在 C# 中以编程方式执行此操作,那将是更可取的,因为它对我来说更容易使用。

对我应该从哪里开始有什么想法吗?

编辑 - 新想法

我想知道只有一个可以重命名并复制到 sql server 的数据库文件 (mdf?) 会有多困难。这可能吗?

【问题讨论】:

  • 只运行一个生成数据库的 SQL 脚本可能更容易
  • @bechbd - 这就是我的一些同事现在告诉我的。只需从 C# 执行 sql 即可创建数据库并创建表、关系、约束和默认数据。
  • 您打算这样做多少次?几十、几百、几千?
  • @jfar - Ummm... 超过数百人 ;-) ... 多人。

标签: c# sql asp.net-mvc tsql deployment


【解决方案1】:

我建议编写新数据库的创建脚本并将其作为应用程序安装的一个步骤。

您也可以让 SQL 企业管理器为您做很多工作来生成脚本。如果您使用的是企业管理器,只需右键单击您的数据库并选择:

任务 -> 生成脚本

在该向导中,选择您的数据库和“为选定数据库中的所有对象编写脚本”。这最终将为您的整个 dB 生成一个创建脚本。

然后您可以获取该脚本文件并将其作为资源包含在您的安装程序中,并在安装期间运行它以创建完整的 dB。

如果您要走这条路,要考虑的一件好事是输入数据。您可能需要包含另一个脚本步骤来填充您的类型数据,因为第一个脚本只会生成您的 dB、表格和 procs。

【讨论】:

  • 这听起来很酷。你说的“类型数据”是什么意思?
  • 典型的“类型数据”是您的应用程序使用但不是由它创建的状态代码或其他数据的列表,或者您希望在第一次运行时在数据库中拥有的任何数据。
【解决方案2】:

我能想到的两种方法是:

1) Web 设置项目 - 类似于此帖子 here 并添加您自己的自定义操作 2) 让它在你的应用程序第一次运行时搜索一个数据库,如果找不到,它会给你添加数据库/连接字符串的选项。

这两者都可以在 C# 中完成。在设置数据库之前,您不会使用存储过程,因为这是 SPROCS 所在的位置。

【讨论】:

    【解决方案3】:

    嵌入数据库可能是您最好的选择。您可以使用 .mdb、SQLite 或类似文件。如果您使用 .mdb,只需创建一个模板 .mdb,然后将其作为项目的资源。然后你可以将它复制到目的地并从那里修改它。

    我会使用 SQLite,因为它是开源的,然后您不必更改连接字符串,因为您只需使用程序的安装目录来存储它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      • 2017-05-28
      相关资源
      最近更新 更多