Расширение каталога ProductProduct (таблица позиций) - PullRequest
0 голосов
/ 07 марта 2019

Я хочу расширить модель CatalogProduct своей собственной моделью.Я последовал примеру CartModule на GitHub.Я думаю, что я выполнил все части примера, но я все еще не мог заставить его работать.

Вот элементы, которые я сделал:

  • Установил VirtoCommerce.CatalogModule.Data из NuGet в модуль, который я создал.
  • Создан класс MyProduct, который наследует класс CatalogProduct.
  • Создан класс MyProductEntity, который наследует ItemEntity, и я переопределяю 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())));
    
  • Вот что я вставил для PostInitialize ()

    AbstractTypeFactory<CatalogProduct>.OverrideType<CatalogProduct, MyProduct>();
    AbstractTypeFactory<ItemEntity>.OverrideType<ItemEntity, MyProductEntity>();
    
  • Перестроил мой модуль и перезапустил IIS

  • Я ударил localhost/ администратор / документы / ВиртoCommerce.Catalog / v1, чтобы увидеть, возвращаются ли поля, которые я добавляю в мою модель, из определений продукта.Это не так.

Какие шаги я пропускаю?Я на самом деле получил миграцию работает.На самом деле он создал таблицу «MyProduct» в базе данных.

Другой вопрос: стоит ли добавлять столбцы в существующую таблицу «Item»?или рекомендуется расширить новую таблицу при расширении модели предметной области?

Спасибо всем заранее!

1 Ответ

0 голосов
/ 11 марта 2019

Причина, по которой вы не видите изменений в API, заключается в том, что помимо модели домена модуль каталога также использует веб-модель - например, для Product , и контроллеры API возвращают эти объекты веб-модели. В этом разница с модулем корзины в примере.

Чтобы увидеть изменения, вам нужно использовать расширенный тип для веб-модели и расширить конвертер .

Как видите, расширения модулей каталога не так просты в версии vc-platform 2x. Это будет уменьшено в версии платформы 3x (NET Core) за счет исключения веб-модели.

Более простой встроенный способ расширения функциональности объектов Каталога на платформе 2x заключается в использовании динамических свойств ( в пользовательском интерфейсе , по коду ).

Другой вопрос заключается в том, что стоит добавить столбцы в существующая таблица «Предмет»? или рекомендуется создать новую таблицу, когда расширение модели предметной области?

Рекомендуется создать новую таблицу.

...