如何向 NOPCommerce v2.4 添加新表

Posted

技术标签:

【中文标题】如何向 NOPCommerce v2.4 添加新表【英文标题】:How to add new tables to NOPCommerce v2.4 【发布时间】:2012-04-12 15:48:48 【问题描述】:

我是 NopCommerce v2.4 的新手,想知道在哪里编写代码(通过在 admin 或 nop.web 部分创建新模型)

【问题讨论】:

【参考方案1】:

我花了很多时间来深入研究这个问题的深度。我可以将解决方案总结如下:

    创建实体类(例如 Entity.cs)

    路径:Nop/Core/Domain/Entity.cs

    创建映射类(例如 EntityMap.cs)

    路径:Nop/Data/Mapping/EntityMap.cs

    为 MVC 创建模型(例如 EntityModel.cs)

    路径:Nop/Admin/Models/EntityModel.cs 或 Nop/Web/Models/EntityModel.cs

    为模型创建一个验证器(例如 EntityValidator.cs)

    路径:Nop/Admin/Validators/EntityValidator.cs 或 Nop/Web/Validators/EntityValidator.cs

    在 AutoMapperStartupTask.cs 上为实体和模型创建映射配置

    路径:Nop/Admin/Infrastructure 或 Nop/Web/Infrastructure

    在 MappingExtensions.cs 上应用模型和实体之间的映射

    路径:Nop/Admin 或 Nop/Web

    创建服务类和服务接口(例如 EntityService.cs 、 IEntityService.cs)

    路径:Nop/Services/EntityService.cs 和 Nop/Services/IEntityService.cs

    为依赖注入注册服务

    路径:Nop/Web/Framework/DependencyRegistrar.cs

    最后为给定模型创建控制器和视图

由于 Nop Commerce 使用 MVC3 的第一个版本,因此不支持数据库迁移,您必须手动更改数据库表。因为 MVC 代码优先必须删除并重新创建数据库以反映对数据库的更改。

如果您想了解任何步骤的更多细节,请告诉我 - 我可以详细描述每个步骤。 希望这会有所帮助。

【讨论】:

您能详细解释一下或举个例子吗?我在数据库中创建了一个表,但我不想创建一个新插件,我只想在 Nop.Core Nop.Data Nop.Services 中添加类......但我不知道这个过程。我只想创建服务并调用服务以在 Nop.Web 或 Nop.plugin 中加载我的下拉列表。 我是否应该在我的数据库中为新实体创建一个新插件并在其他项目(如其他插件或 Nop.Web 或管理项目)中引用它,而不是在 Nop.Core Nop.Data Nop 中添加我的类。服务?【参考方案2】:

Behnam Esmaili 解决方案是正确的,但他们忘记在 Presentation 中添加一个注册新创建的控制器服务的步骤 ==> Nop.Web.Framework ==> DependencyRegistrar.cs 像这样

builder.RegisterType<EntityService>().As<IEntityService>().InstancePerHttpRequest();         

【讨论】:

【参考方案3】:

此问题已在 NOPCommerce 论坛here回复

http://www.nopcommerce.com/docs/75/plugin-with-data-access.aspx

【讨论】:

我还需要更多帮助。我在我的插件中添加了该项目我无法在管理员 -> 配置 -> 插件中看到此插件 我在 \Presentation\Nop.Web\Views\Catalog\ProductTemplate.SingleVariant.cshtml @Html.Action(" Index", "Tracking", new productId = Model.Id ) 我收到此异常:子请求的执行失败。请检查 InnerException 以获取更多信息。 InnerException:“路径'/p/5/1-oz-krugerrand'的控制器未找到或未实现IController。”我只是通过管理员添加了一些产品。 我没有做过插件,但记得添加了一些现有的插件。我希望您验证是否将构建输出路径设置为 Nop.Web\Plugins\ 并检查 App_data 文件夹中的 InstalledPlugins.txt【参考方案4】:

@Behnam Esmaili

回答了完美的答案,但是您应该在创建控制器时遇到问题,因为您无法从 IEntityService 创建实例,因为 nopCommerce 使用依赖注入,并且这是由 AutoFac 容器控制的。

所以你持有Check this post on nopCommerce forum,这将有助于你完成工作。

还有一个注意事项, 如果您想避免手动更改数据库,您应该在新版本的 nopCommerce 上执行从 1 到 8 的步骤并安装它,数据库将使用您对模型所做的更改来创建。

【讨论】:

【参考方案5】:

还有一步Behnam Esmaili的答案

在 NopCommerce 数据库中创建表。

注意:需要在数据库中手动创建表。

最后创建控制器及其视图。

如果您想了解更多详情,请点击here!

【讨论】:

以上是关于如何向 NOPCommerce v2.4 添加新表的主要内容,如果未能解决你的问题,请参考以下文章

Magento2开发教程 - 如何向数据库添加新表

向模型 (edmx) 添加新表而不更新 Database First Entity Framework MVC 应用程序中的其他模型

nopcommerce的挂件技术

在NopCommerce中发布时,浏览器会添加零

[转]教你一招 - 如何给nopcommerce增加一个类似admin的area

在快速自定义的NopCommerce中使用实体框架(EF)代码优先迁移