我想用自己的模型扩展分类模型。我遵循了GitHub上的Cartmodule示例。我想我做了示例所拥有的所有部分,但是我仍然无法正常工作。
这是我做的项目:
- 安装了virtocommerce.catalogmodule.data从nuget到我创建的模块。
- 创建了一个继承Catalogproduct类的肌液类别。
- 创建了继承效率的myproductentity类,我覆盖了Tomodel,FromModel和Patch函数。
- 创建了MyProDuctRepositoty类,该类继承了CatalogrePositoryImpl,并覆盖了onModeLcreating函数,以告诉我要映射到哪个表。
-
修改了Module.cs文件,并实现了setupDatabase(),initialize()和postInitialize()。
-
这是我为initialize()
提出的_container.RegisterType<ICatalogRepository>(new InjectionFactory(c => new MyProductRepository(_connectionStringName, _container.Resolve<AuditableInterceptor>(), new EntityPrimaryKeyGeneratorInterceptor())));
-
这是我为initialize()
提供的内容AbstractTypeFactory<CatalogProduct>.OverrideType<CatalogProduct, MyProduct>(); AbstractTypeFactory<ItemEntity>.OverrideType<ItemEntity, MyProductEntity>();
-
重建我的模块,然后重新启动IIS
- 我击中了localhost/admin/docs/virtocommerce.catalog/v1,以查看我添加到模型返回的字段是否从产品定义返回。不是。
我缺少一些步骤吗?我实际上使迁移工作。它实际上在数据库中创建了" MyProduct"表。
另一个问题是,在现有的"项目"表中添加列是一个好主意吗?还是建议在扩展域模型时创建一个新表?
谢谢大家!
您看不到API的变化的原因是,除了域模型目录模块外,还使用Web模型 - 例如。对于产品,并且API控制器返回这些Web模型对象。这就是与购物车模块的区别。
为了查看更改,您需要将扩展类型用于Web模型并扩展转换器。
您可以看到,目录模块扩展名在VC-Platform 2X版本中并不那么简单。通过消除Web模型,将在3X(Net Core)平台版本中缓解这。
在平台2x中扩展目录对象功能的内置方式更容易使用动态属性(在UI中,按代码)。
另一个问题是,将列添加到 现有的"项目"表?还是建议在 扩展域模型?
推荐的方法是创建新表。