我有一些模型,我想在打字稿中使用它们,因此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
答案 0 :(得分:2)
您的服务器技术是什么?您是否在服务器上使用Entity Framework?如果是这样,元数据将来自服务器。您可以通过EFContextProvider在Web API控制器中提取它,如下所示:
http://www.getbreezenow.com/documentation/efcontextprovider
然后在客户端上,您将为每个实体类型生成TS类,并使用Breeze注册ctors。您可以在此相关问题中找到示例。
Extending a breeze entity using TypeScript
生成只是接口不会让你走得太远,因为接口在运行时在TS中没有意义。它们仅在开发期间有用。