#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
onOnBeforeSave
, он также должен автоматически получать этот идентификаторOnAfterSave
. Вы можете проверить своеId
поле в строке с помощью create an overrideOnAfterSave
и вызватьbase.OnAfterSave();
, а затем нажать точку останова. ВашId
должен быть на вашемthis.Row
.3. Вот где и как для обработки деталей получает значение идентификатора. github.com/volkanceylan/Serenity/blob /…