从接口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 中的运行时没有任何意义。它们仅在开发期间有用。
我有一些模型,我想在 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 中的运行时没有任何意义。它们仅在开发期间有用。