Что мне удалось сделать сейчас следующее: Мой генерироваться JayData контекст выглядит следующим образом:
$data.EntityContext.extend('myNameSpace.MyContext', {
'Cases': { type: $data.EntitySet, elementType: myNameSpace.Case},
// ... other Entitysets
}
Позже я продлить этот контекст так:
myNameSpace.MyContext.extend('myNameSpace.MyExtendedContext', {
'Cases': { type: $data.EntitySet, elementType: myNameSpace.Case, actions: {
'Checkout': { type: $data.ServiceAction, returnType: 'myNameSpace.Case', IsBindable: true, 'EntitySet': 'Cases', IsAlwaysBindable: true, params: [{ name: 'Id', type: 'Edm.Guid' }] }
}
}
Так что я могу используйте мое действие, если позже я использую расширенный контекст. Я думаю, что это должно быть достаточно хорошо.
Мои определения Машинопись для этого выглядеть следующим образом:
declare module myNamespace {
export class CaseExtensions extends $data.EntitySet<myNamespace.Case> {
Checkout: {
(Id: string, handler?: (result: myNamespace.Case) => void): $data.IPromise<Case>;
(params?: { Id?: string; }, handler?: (result: myNamespace.Case) => void): $data.IPromise<Case>;
};
}
export class MyExtendedContext extends MyContext {
Cases: CaseExtensions;
}
}
ли вы имеете в виду добавление действия в клиенте во время выполнения? –
@PeterAronZentai Нет. Мои контроллеры Web Api созданы из сценариев T4, непосредственно, когда я редактирую свою диаграмму данных (материальный архитектор .tasl-файл). Я также создал сценарий T4, который автоматически создаст модели Jaydata. Контроллеры являются частичными классами, и теперь у меня есть случай, когда я добавляю дополнительные действия к одному контроллеру. Я знаю, как это сделать для контроллера (частичный класс), но я также хотел бы сохранить автогенерирование моделей Jaydata неповрежденными, и в основном также хотел бы, чтобы этот частичный класс продолжался в модели Jaydata. – Malyngo