2013-02-20 63 views
1

当John Papa发布了关于this MVC 4 Web API应用程序的新SPA模板时,我对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}; 

    } 
} 

是否真能与breeze.js运行DevForce 2012??我现在很长时间在Google上搜索,但很少有像样的搜索结果。我很抱歉,如果没有,但可能文件缺乏这个,但?

请和我袒护。我对MVC和Html5/JavaScript很陌生。我真的很感谢能与此合作。

回答

1

使用Breeze重构DevForce的最佳方式是将现有的实体框架模型共享(或复制)到Breeze。正如你可以在文档中所看到的,你再缠上微风EFContextProvider实体框架范围内揭露它作为一个的WebAPI端点: http://www.breezejs.com/documentation/web-api-controller

由于各种技术原因,微风不直接消耗DevForce模式,但你通过继承EFContextProvider(http://www.breezejs.com/documentation/custom-efcontextprovider)可以访问等价的保存拦截器,并且可以在您的子类ApiController(http://www.breezejs.com/documentation/web-api-controller)中执行查询拦截。

另请注意,Breeze支持EF的复杂类型,但尚未支持EF继承或EF多对多映射且无负载。 编辑:从v1.3.1开始,Breeze现在支持继承。

希望这会有所帮助!

+0

如果我需要一些帮助,我会回到这个。但它应该足以开始。非常感谢! – 2013-02-21 12:18:05

+0

另一个问题。我试图在我的控制器中创建一个'EFContextProvider contextProvider'字段。 'MyCustomData'从'IdeaBlade.EntityModel.EntityManager'继承。我添加了一个无参数的ctor,用默认参数调用空的基本ctor。但是,只要breeze.js(?)请求'contextProvider.MetaData()',就会抛出一个'InvalidCastException'。 'MyCustomData'不能转换为'DbContext'。如何解决这个问题? – 2013-02-23 16:30:23

+0

'MyCustomData'必须是'DbContext'或'ObjectContext'。它不能成为DevForce'EntityManager'。您可以为DevForce服务器端模型定义(并经常定义)[自定义DbContext](http://drc.ideablade.com/devforce-2012/bin/view/Documentation/code-first-dbcontext)。 – Ward 2013-02-24 22:37:45