从接口breeze+Typescript生成元数据

Generate metadata from interface breeze+Typescript

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

构建 metadataStore

这是我的 typescript 接口,由 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 和 return 单个结果中获取元数据

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

构建它们

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

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

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

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