从界面breeze + Typescript生成元数据

时间:2015-03-14 08:58:29

标签: typescript entity breeze

我有一些模型,我想在打字稿中使用它们,因此breeze可以使用这些模型并构建metadataStore,但不知道该怎么做,有一些方法可以手动添加属性,但我想从现有模型

构建metadataStore

这是我的打字稿界面,由T4TS

生成
/** Generated from Twine.Infrastructure.Entity **/
export interface IEntity extends breeze.Entity {
  _id: number;
  _created_at?: string;
  _updated_at?: string;
}
/** Generated from Twine.Infrastructure.Models.Ingredient **/
export interface IIngredient extends twine.Model.IEntity {
  Price?: number;
  Name: string;
  Description: string;
}

我确实添加了extends breeze.Entity

这是应该从T获取元数据并通过id

返回单个结果的服务
Get<T>( key:string,  successCallback: Function, failCallback?: Function ): void {
  var type = new breeze.EntityType(); //what should be here???
  var entityKey = new breeze.EntityKey(type, key);
  this.manager.fetchEntityByKey(entityKey)
    .then( ( data: breeze.EntityByKeyResult ) => { successCallback( data ) })
    .catch( ( reason: any ) => {
      if ( failCallback ) {
        failCallback( reason );
      }
    });
}

因此new breeze.EntityType();此构造函数接受EntityTypeOptions,它看起来像

interface EntityTypeOptions {
    shortName?: string;
    namespace?: string;
    autoGeneratedKeyType?: AutoGeneratedKeyType;
    defaultResourceName?: string;
    dataProperties?: DataProperty[];
    navigationProperties?: NavigationProperty[];
}

那么我在哪里添加现有的IEntity模型?所以我不需要从EntityTypeOptions

构建它们

1 个答案:

答案 0 :(得分:2)

您的服务器技术是什么?您是否在服务器上使用Entity Framework?如果是这样,元数据将来自服务器。您可以通过EFContextProvider在Web API控制器中提取它,如下所示:

http://www.getbreezenow.com/documentation/efcontextprovider

然后在客户端上,您将为每个实体类型生成TS类,并使用Breeze注册ctors。您可以在此相关问题中找到示例。

Extending a breeze entity using TypeScript

生成只是接口不会让你走得太远,因为接口在运行时在TS中没有意义。它们仅在开发期间有用。