Вкладка Serenity-Platform — Сведения о заказе не принимает идентификатор заказа

#typescript #asp.net-core #serenity-platform

#typescript #asp.net-core #serenity-платформа

Вопрос:

Я пытаюсь создать тот же пример заказов- детали заказа.

введите описание изображения здесь

Я сделал это в своем пользовательском модуле, который является контрактом и позицией контракта.

введите описание изображения здесь

введите описание изображения здесь

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

введите описание изображения здесь

Есть идеи, пожалуйста? Большое вам спасибо.

Комментарии:

1. В примере есть все подробности для этого. Сравните свой код

2. спасибо, Виктор, за ваш ответ, я следовал тому же образцу / кодам в деталях заказа-заказа и применил его к своему пользовательскому модулю, но внешний ключ не заполняется автоматически. Есть подробное пошаговое руководство? возможно, я что-то пропустил.

3. Доступна ли эта MasterDetailRelation в бесплатной версии?

4. Он находится в модуле northwind, так что да, он включен в версию сообщества

Ответ №1:

Вам необходимо переопределить поведение сохранения в репозитории контрактов для создания идентификатора. Попробуйте установить поле в этом переопределении.

     private class MySaveHandler : SaveRequestHandler<MyRow> 
    {
        protected override void SetInternalFields()
        {
            base.SetInternalFields();
            Row.OrderID = yourId;
        }
    }
 

Комментарии:

1. Спасибо, Виктор, да, я могу переопределить поведение сохранения в репозитории позиций строки контракта, но как я могу получить идентификатор основной записи (идентификатор контракта)?. Я проверил образец детали заказа, поведение сохранения хранилища сведений о заказе не было переопределено, но оно работает нормально, как это происходит?

2. У Serenity есть магия 🙂 MasterDetailRelationBehavior автоматически запускается OnAfterSave . Это расширяет OnAfterSave метод для сохранения отношения. Поэтому, если вы создаете свой Id on OnBeforeSave , он также должен автоматически получать этот идентификатор OnAfterSave . Вы можете проверить свое Id поле в строке с помощью create an override OnAfterSave и вызвать base.OnAfterSave(); , а затем нажать точку останова. Ваш Id должен быть на вашем this.Row .

3. Вот где и как для обработки деталей получает значение идентификатора. github.com/volkanceylan/Serenity/blob /…