0

语境

  • 我有一个使用多个表的 DNN 7 模块。

  • 为了清晰和易于使用,我将 CREATE TABLE 语句放在单独的文件中。

  • 我的模块的 .dnn 文件在 components 标记下的每个脚本都有多个条目。

问题

当我安装模块时,只执行最后一个安装脚本(在示例“CreateProductWidths”的情况下),忽略其他。

问题

如何在安装期间在单独的文件中运行多个脚本?我在这个模块中总共有 15 个表,因此将它们的所有定义都放在一个脚本中是不利的。如果太难了,我可能做错了,我愿意接受建议。谢谢。

例子

<component type="Script">
    <scripts>
        <basePath>DesktopModules\ProductManager</basePath>
        <script type="Install">
          <path>Providers\DataProviders\SqlDataProvider</path>
          <name>CreateProductCategories.SqlDataProvider</name>
          <version>00.00.01</version>
        </script>
        <script type="Install">
          <path>Providers\DataProviders\SqlDataProvider</path>
          <name>CreateProductFamilies.SqlDataProvider</name>
          <version>00.00.01</version>
        </script>
        <script type="Install">
          <path>Providers\DataProviders\SqlDataProvider</path>
          <name>CreateProductWidths.SqlDataProvider</name>
          <version>00.00.01</version>
        </script>
        <script type="UnInstall">
          <path>Providers\DataProviders\SqlDataProvider</path>
          <name>Uninstall.SqlDataProvider</name>
          <version>00.00.01</version>
        </script>
    </scripts>
</component>
4

1 回答 1

0

狄龙,

我相信 DNN 安装每个版本只支持一个脚本文件。大多数时候,模块 CREATE TABLE/SPROC/VIEW 脚本处于其第一个版本,即:01.00.00。然后后续脚本将具有更改表脚本或为该版本更改所需的任何内容。这是一种很好的做法,因为它允许您管理版本控制。此外,您的脚本应该可以重新运行,以防安装被修复。因此,您的 CREATE 语句应以 IF EXISTS 语句开头。

话虽如此,如果您想拆分脚本,可以将包版本设置为 01.00.00。

IE:

<package name="Module.Name" type="Module" version="00.01.00">

然后对脚本进行不同的版本化,即:“00.00.01”、“00.00.02”、“00.00.03”等。DNN 将运行版本小于或等于包版本号的所有脚本。它还将按版本号顺序运行它们。

于 2013-10-15T02:24:30.710 回答