扩展CatalogProduct模型(Item表)

问题描述 投票:0回答:1

我想用我自己的模型扩展CatalogProduct模型。我在GitHub上关注了CartModule示例。我想我做了这个例子的所有部分,但我仍然无法使它工作。

这是我做的项目:

  • 将NuGet中的VirtoCommerce.CatalogModule.Data安装到我创建的模块中。
  • 创建了一个继承CatalogProduct类的MyProduct类。
  • 创建了MyProductEntity类,它继承了ItemEntity,并重写了ToModel,FromModel和Patch函数。
  • 创建了继承CatalogRepositoryImpl的MyProductRepositoty类,并重写OnModelCreating函数以告知我要映射到哪个表。
  • 修改了Module.cs文件,并实现了SetupDatabase(),Initialize()和PostInitialize()。
  • 这是我为Initialize()添加的内容 _container.RegisterType<ICatalogRepository>(new InjectionFactory(c => new MyProductRepository(_connectionStringName, _container.Resolve<AuditableInterceptor>(), new EntityPrimaryKeyGeneratorInterceptor())));
  • 这是我为PostInitialize()添加的内容 AbstractTypeFactory<CatalogProduct>.OverrideType<CatalogProduct, MyProduct>(); AbstractTypeFactory<ItemEntity>.OverrideType<ItemEntity, MyProductEntity>();
  • 重建我的模块,然后重新启动IIS
  • 我点击localhost / admin / docs / VirtoCommerce.Catalog / v1查看我添加到模型的字段是否从产品定义返回。它没有。

我缺少一些步骤吗?我实际上让迁移工作了。它实际上在数据库中创建了“MyProduct”表。

另一个问题是,在现有的“Item”表中添加列是个好主意吗?或者是否建议在扩展域模型时创建新表?

谢谢大家先进!

virtocommerce
1个回答
0
投票

您无法看到API更改的原因是除了域模型之外,目录模块还使用Web模型 - 例如对于Product,API控制器返回这些Web模型对象。这与示例中的Cart模块有所不同。

要查看更改,您需要将扩展​​类型用于Web模型并扩展converter

如您所见,目录模块扩展在vc-platform 2x版本中并不那么简单。这将通过消除Web模型在3x(NET Core)平台版本中得到缓解。

在平台2x中扩展目录对象功能的更简单的内置方法是使用动态属性(in UIby code)。

另一个问题是,在现有的“Item”表中添加列是个好主意吗?或者是否建议在扩展域模型时创建新表?

推荐的方法是创建新表。

© www.soinside.com 2019 - 2024. All rights reserved.