JayData数据模型已经创建 - 之后添加OData操作

时间:2015-02-25 09:58:10

标签: t4 jaydata

我有一个OData Web Api服务,我使用EF数据模型中的T4模板创建控制器。 在这样做的同时,我还使用T4创建了Jaydata数据模型。

但是现在,我有一个部分类,它会向我的一个控制器添加一个动作。

由于JayData文件也是由T4模板创建的,有没有办法稍后向其中一个EntitySet添加动作?

1 个答案:

答案 0 :(得分: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' }] }
    }
}

如果我以后使用扩展的上下文,我可以使用我的动作。我认为这应该足够好了。

我的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;
}
}