JayData 数据模型已创建 - 之后添加 OData 操作
JayData Data model already created - add an OData action afterwards
我有一个 OData Web Api 服务,我在其中使用来自 EF 数据模型的 T4 模板创建控制器。
在这样做的同时,我还使用 T4 创建了 Jaydata 数据模型。
但是现在,我有一个部分 class 可以向我的一个控制器添加一个动作。
由于 JayData 文件也是由 T4 模板创建的,有没有办法稍后将操作添加到其中一个 EntitySet 中?
我现在设法做的是:
我生成的 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' }] }
}
}
所以如果我以后使用我的扩展上下文,我可以使用我的动作。我认为这应该足够好了。
我的 Typescript 定义如下所示:
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;
}
}
我有一个 OData Web Api 服务,我在其中使用来自 EF 数据模型的 T4 模板创建控制器。 在这样做的同时,我还使用 T4 创建了 Jaydata 数据模型。
但是现在,我有一个部分 class 可以向我的一个控制器添加一个动作。
由于 JayData 文件也是由 T4 模板创建的,有没有办法稍后将操作添加到其中一个 EntitySet 中?
我现在设法做的是: 我生成的 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' }] }
}
}
所以如果我以后使用我的扩展上下文,我可以使用我的动作。我认为这应该足够好了。
我的 Typescript 定义如下所示:
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;
}
}