【问题标题】:How to get started with breeze.js and DevForce 2012?如何开始使用微风.js 和 DevForce 2012?
【发布时间】:2013-02-20 21:42:25
【问题描述】:

当 John Papa 发布关于 this 用于 MVC 4 Web API 应用程序的新 SPA 模板时,我对微风.js 非常好奇。

我目前正在开发一个应用程序,它使用 DevForce 2012 作为实体数据模型,并正在寻找该模型如何支持微风.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};

    }
}

是否真的可以使用微风.js 运行 DevForce 2012?我现在在谷歌上搜索了很长时间,但很少产生像样的搜索结果。如果没有,我很抱歉,但文档可能缺少这个吗?

【问题讨论】:

    标签: c# asp.net-mvc breeze devforce


    【解决方案1】:

    使用 Breeze 重构 DevForce 的最佳方法是将现有的实体框架模型共享(或复制)到 Breeze。正如您可能在文档中看到的那样,然后使用 Breeze 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 多对多映射。 编辑:从 v1.3.1 起,Breeze 现在支持继承。

    希望这会有所帮助!

    【讨论】:

    • 如果我需要一些帮助,我会回到这里。但这应该足够开始了。非常感谢!
    • 另一个问题。我试图在我的控制器中创建一个EFContextProvider&lt;MyCustomData&gt; contextProvider 字段。 MyCustomData 继承自 IdeaBlade.EntityModel.EntityManager。我添加了一个无参数 ctor,使用默认参数调用空的基础 ctor。但是一旦轻风.js(?)请求contextProvider.MetaData(),就会抛出InvalidCastExceptionMyCustomData 无法转换为 DbContext。如何解决?
    • MyCustomData 必须是 DbContextObjectContext。它不能是 DevForce EntityManager。您可以为 DevForce 服务器端模型定义(并且经常定义)custom DbContext
    • @JayTraband 你能解释一下“还不支持 EF 继承或没有有效负载的 EF 多对多映射”的意思吗?
    • @daveywc - 现在支持继承。这个问题更多地讨论了微风和实体框架中的多对多 (stackoverflow.com/questions/13636528/…)。基本上,您需要为映射表提供一个显式实体并通过两个一对多关联进行导航。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2013-09-01
    • 2013-07-24
    • 1970-01-01
    相关资源
    最近更新 更多