【问题标题】:Upgrade nopcommerce 2.8 to 3.10升级 nopcommerce 2.8 到 3.10
【发布时间】:2013-09-15 02:02:47
【问题描述】:

你好,

我是 NopCommerce 的新手。我对 Nop.Core、Nop.Data 和 Nop.Services 进行了更改。我对 Nop.web 的一些控制器、模型和视图也进行了更改。

如果我想将 nopcommerce 版本从 2.8 升级到 3.10,那么哪种方式既简单又最好。

1) 我备份我的文件并获得更新。一旦更新完成,我可以只替换那些我已经更新并且与原始代码不同的部分吗?我可以在我的备份文件中添加新方法,但不是在原始代码中吗?

2) 或者我必须创建新插件或其他方式。

[例如:我在产品表中进行了更改,并添加了尺寸、年龄、颜色等新字段。]

请让我知道您的宝贵意见。

谢谢

【问题讨论】:

    标签: asp.net-mvc-4 nopcommerce


    【解决方案1】:

    没有直接的正确或错误答案。我建议我采取的方法。假设您在基本 nop 2.80 之上进行了代码更改和数据库更改。

    基础工程

    写下详细的修改清单。 (您在 2.80 之上添加的其他功能。)

    请检查 3.10 是否支持您的任何修改。

    我的修改数是 250(非常详细,可以估计)。

    方法

    1. 将 2.80 分贝升级到 3.10 分贝。
    2. 修改 3.10 代码以支持 2.80 的新功能。

    数据库升级

    1. 找到一个好的数据库差异工具。例如:SQL 比较。
    2. 将您的生产 (2.80) 数据库恢复到您的开发电脑,并将 nop 3.10 数据库也安装到您的开发电脑中。
    3. 逐表比较两个数据库。基本上,您将通过比较 3.10 架构将 2.80 db 升级到 3.10 db。
    4. 通过比较 3.10 在 2.80 中更改/删除/添加新列。
    5. 创建存储信息(存储表)。这是 3.10 中的新功能,大多数其他表都需要 StoreID。
    6. 更新客户数据以匹配 3.10 架构。
    7. 更新产品信息。 ProductVariant 表现在与 Product 表合并。所以需要更新产品表。
    8. 更新订单详情。 OrderVariant 现在是 OrderItem。所以移动数据。
    9. 移动其他表。

    我曾经创建单个 SQL 脚本,

    1. 从备份文件恢复生产数据库。
    2. 每个表的脚本块,用于升级每个表并填充数据。

    这为您提供了运行和运行的灵活性,如果有任何错误,您可以再次运行脚本,甚至这在编写脚本时很有帮助。

    除此之外,如果您要将 2 个或多个商店合并为一个,

    1. 在第 5 步中添加所有商店信息。
    2. 现在开始为每个商店创建一个单独的脚本。
    3. 您需要为 OrderId 和 Customer id 找到不同的序列号。不能一样。
    4. 当您添加第二家或更多商店时,请在添加前检查现有客户。

    检查01

    现在使用新的 3.10 代码库并针对迁移的数据库运行。如果您已正确完成迁移,一切都应该运行良好。

    代码升级

    因为没有ProductVariant 表,所以需要对简单代码进行重大更改。所以所有的自定义逻辑都需要重写。

    主要问题是发票。如果您有多个商店,则每个商店都没有电子邮件设置。所以也必须自定义修改。

    一个好的方法是,

    1. 做所有客户方电子商务的拳头。
    2. 然后做管理方面。
    3. 如果客户和管理员具有相同的功能,请一起做。例如,下单工作流程的自定义修改。
    4. 插件不需要大的修改。

    检查02

    使用更新的 3.10 代码库运行迁移的数据库。一切都应该工作。

    大日子

    1. 备份生产数据库和生产代码库。
    2. 运行升级脚本并替换新的代码库。
    3. 没有第三步,因为在这之前你已经完成了所有艰苦的工作。
    4. 好的,如果你搞砸了,那就回滚吧。

    注意事项

    我通过测试学到了这些。感谢上帝,我在实际迁移之前找到了它们。

    在我们迁移时,没有关于如何在 nop Commerce 方面设置完整的多商店解决方案的详细说明。有一个指令here 关于如何在生产服务器中设置 nop commerce。但我并没有涵盖所有方面。

    我们使用 VPS 服务器来托管我们的平台。如果您使用VPS,请注意如果您正确设置了多商店,则需要使用SNI。只有 IIS 8 及更高版本支持 SNI。这意味着您需要 Windows 2012 Server。有关 SNI 的更多信息,请参阅 herehere

    我们使用 Pleask 来管理服务器。因此,将主域设置为主域,将所有其他商店设置为别名。在 IIS 端,RDP 进入 VPS 并使用 IIS8 的 SNI 功能为每个域设置 SSL

    SNI 的下侧,并非所有旧浏览器都支持。见here

    限制

    如果您使用的是 Pleask,那么电子邮件将无法正常工作。由于邮箱只会为主域创建,所有其他别名将共享相同的电子邮件帐户。因此,您可以通过别名电子邮件发送回复。不幸的是,它超出了商业开发范围。

    我还没有找到解决方案。正在处理这个问题。

    【讨论】:

      【解决方案2】:

      我建议以增量方式创建数据库。根据upgrade guide,您必须一次应用一个升级脚本,只需阅读指南即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-12
        • 2017-03-22
        • 2018-10-17
        • 1970-01-01
        • 2018-07-28
        • 1970-01-01
        相关资源
        最近更新 更多