2013-02-20 15 views
1

Когда Джон Папа опубликовал около this новый шаблон SPA для приложений MVC 4 Web API, мне было очень интересно узнать о breeze.js.Как начать работу с breeze.js и DevForce 2012?

В настоящее время я работаю над приложением, которое использует DevForce 2012 как модель данных сущности и искало, как эта модель поддерживает breeze.js.

Я просто хотел создать простой проект MVC 4, который может извлекать данные из таблицы.

Я подумал, что может быть, что контроллер выглядит следующим образом:

[BreezeController] 
public class TodosController : ApiController 
{ 
    // ~/api/todos/Metadata 
    [HttpGet] 
    public string Metadata() 
    { 
     return // that's where I surely need help, 
       // because breeze.js really needs this, I think 
    } 


    // ~/api/todos/CustomEntities 
    [HttpGet] 
    public IQueryable<CustomEntity> CustomEntities() 
    { 
     var manager = MyStaticContext.EntityManager; 
     return new EntityQuery<CustomEntity> {EntityManager = manager}; 

    } 
} 

Является ли это на самом деле возможно запустить DevForce 2012 с breeze.js? Я уже давно занимаюсь поиском в Интернете, но приличные результаты поиска получаются редко. Простите, если это не так, но может ли документация не хватать этого?

Голые со мной, пожалуйста. Я очень новичок в MVC и Html5/JavaScript. Я бы очень признателен за это.

ответ

1

Лучший способ рефакторирования DevForce with Breeze - поделиться (или скопировать) существующую модель Entity Framework на Breeze. Как вы, возможно, видели в документации, вы затем обернуть Entity Framework контекст с ветерком EFContextProvider выставить его в качестве WebAPI конечной точки: http://www.breezejs.com/documentation/web-api-controller

По различным техническим причинам, Breeze не потребляет модель DevForce напрямую, но вы имеют доступ к эквивалентным сбережениям перехватчиков путем подкласса EFContextProvider (http://www.breezejs.com/documentation/custom-efcontextprovider) и могут выполнять перехват запросов в вашем подклассе ApiController (http://www.breezejs.com/documentation/web-api-controller).

Также обратите внимание, что Breeze поддерживает сложные типы EF, но еще не поддерживает наследование EF или многофакторное отображение EF без использования полезной нагрузки. Редактировать: Начиная с версии 1.1.1 Breeze теперь поддерживает наследование.

Надеюсь, это поможет!

+0

Я вернусь к этому, если мне понадобится помощь. Но этого должно быть достаточно, чтобы начать. Большое спасибо! –

+0

Другой вопрос. Я попытался создать поле 'EFContextProvider contextProvider' в моем контроллере. 'MyCustomData' наследуется от' IdeaBlade.EntityModel.EntityManager'. Я добавил без параметров ctor, вызывая пустой базовый ctor с параметрами по умолчанию. Но как только 'contextProvider.MetaData()' запрашивается breeze.js (?), Вызывается 'InvalidCastException'. 'MyCustomData' не может быть преобразован в' DbContext'. Как это решить? –

+0

'MyCustomData' должен быть' DbContext' или 'ObjectContext'. Это не может быть DevForce 'EntityManager'. Вы можете определить (и часто определять) [пользовательский DbContext] (http://drc.ideablade.com/devforce-2012/bin/view/Documentation/code-first-dbcontext) для моделей на стороне сервера DevForce. – Ward

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

  • Нет связанных вопросов^_^