2015-02-25 4 views
0

У меня есть служба OData Web Api, где я создаю контроллеры с шаблоном T4 из Eat datamodel. При этом я также создаю datamodel Jaydata с T4.JayData Модель данных уже создана - добавление действия OData после этого

Но теперь у меня есть частичный класс, который добавит действие к одному из моих контроллеров.

Поскольку файл JayData также создается шаблоном T4, есть ли способ добавить действия к одному из EntitySets позже?

+0

ли вы имеете в виду добавление действия в клиенте во время выполнения? –

+0

@PeterAronZentai Нет. Мои контроллеры Web Api созданы из сценариев T4, непосредственно, когда я редактирую свою диаграмму данных (материальный архитектор .tasl-файл). Я также создал сценарий T4, который автоматически создаст модели Jaydata. Контроллеры являются частичными классами, и теперь у меня есть случай, когда я добавляю дополнительные действия к одному контроллеру. Я знаю, как это сделать для контроллера (частичный класс), но я также хотел бы сохранить автогенерирование моделей Jaydata неповрежденными, и в основном также хотел бы, чтобы этот частичный класс продолжался в модели Jaydata. – Malyngo

ответ

0

Что мне удалось сделать сейчас следующее: Мой генерироваться 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; 
} 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^