2015-03-14 4 views
0

У меня есть несколько моделей, и я хочу использовать их в машинописных текстах, так что бриз может потреблять эти модели и строить metadataStore, но не знаю, что делать, есть несколько способов добавить свойства вручную, но я хочу, чтобы построить metadataStore от существующей моделиГенерировать метаданные из интерфейса breeze + Typcript

Это мои машинопись интерфейсы, которые были порождаемые 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 и возвращать один результат по идентификатору

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

ответ

2

Какова ваша серверная технология? Вы используете Entity Framework на сервере? Если это так, метаданные будут поступать с сервера. Вы извлечь его в Web API контроллера через EFContextProvider, как показано здесь:

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

Тогда на клиенте вы бы генерировать классы TS для каждого из типов сущностей и зарегистрировать ctors с Breeze. Вы можете найти пример в этом связанном вопросе.

Extending a breeze entity using TypeScript

Генерация только интерфейсы не будет вам очень далеко, как интерфейсы не имеют никакого значения во время выполнения в TS. Они полезны только во время разработки.

+0

см. Здесь http://stackoverflow.com/questions/29058810/is-there-any-angularjs-asp-net-webapi-odata-breeze-js-typescript-example/29066931#29066931 –

+0

Да, я используйте entityframework, но угадайте, что бриз неправильно сконфигурирован –

Смежные вопросы