C# 如何开始使用breeze.js和DevForce 2012?

C# 如何开始使用breeze.js和DevForce 2012?,c#,asp.net-mvc,breeze,devforce,C#,Asp.net Mvc,Breeze,Devforce,当John Papa发布MVC4 Web API应用程序的新SPA模板时,我对breeze.js非常好奇 我目前正在开发一个应用程序,它使用DevForce 2012作为实体数据模型,并正在搜索该模型如何支持breeze.js 我只是想构建一个简单的MVC4项目,它能够从表中获取数据 我想这可能是控制器的样子: [BreezeController] public class TodosController : ApiController { // ~/api/todos/Metadata

当John Papa发布MVC4 Web API应用程序的新SPA模板时,我对breeze.js非常好奇

我目前正在开发一个应用程序,它使用DevForce 2012作为实体数据模型,并正在搜索该模型如何支持breeze.js

我只是想构建一个简单的MVC4项目,它能够从表中获取数据

我想这可能是控制器的样子:

[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};

    }
}
[BreezeController]
TodosController的公共类:ApicController
{
//~/api/todos/Metadata
[HttpGet]
公共字符串元数据()
{
return//那是我需要帮助的地方,
//因为breeze.js真的需要这个,我想
}
//~/api/todos/CustomEntities
[HttpGet]
公共IQueryable自定义实体()
{
var manager=MyStaticContext.EntityManager;
返回新的EntityQuery{EntityManager=manager};
}
}

是否可以使用breeze.js运行DevForce 2012?我在谷歌上搜索了很长一段时间,但很少有像样的搜索结果。如果没有,我很抱歉,但是文档中可能缺少这一点吗?

使用Breeze重构DevForce的最佳方法是将现有的实体框架模型共享(或复制)给Breeze。正如您在文档中看到的,然后使用Breeze EFContextProvider包装实体框架上下文,将其公开为WebAPI端点:

出于各种技术原因,Breeze不会直接使用DevForce模型,但您可以通过子类化EFContextProvider()访问等效的save拦截器,并可以在子类化ApiController()中执行查询拦截

还要注意的是,Breeze支持EF的复杂类型,但还不支持EF继承或EF多对多映射(没有有效负载)编辑:从v1.3.1开始,Breeze现在支持继承


希望这有帮助

用Breeze重构DevForce的最佳方法是将现有的实体框架模型共享(或复制)给Breeze。正如您在文档中看到的,然后使用Breeze EFContextProvider包装实体框架上下文,将其公开为WebAPI端点:

出于各种技术原因,Breeze不会直接使用DevForce模型,但您可以通过子类化EFContextProvider()访问等效的save拦截器,并可以在子类化ApiController()中执行查询拦截

还要注意的是,Breeze支持EF的复杂类型,但还不支持EF继承或EF多对多映射(没有有效负载)编辑:从v1.3.1开始,Breeze现在支持继承


希望这有帮助

如果我需要帮助的话,我会回去的。但这应该足够开始了。谢谢!另一个问题。我试图在控制器中创建
EFContextProvider contextProvider
字段
MyCustomData
继承自
IdeaBlade.EntityModel.EntityManager
。我添加了一个无参数的ctor,用默认参数调用空的基ctor。但是只要breeze.js(?)请求
contextProvider.MetaData()
,就会抛出
InvalidCastException
MyCustomData
无法转换为
DbContext
。如何解决此问题?
MyCustomData
必须是
DbContext
ObjectContext
。它不能是DevForce
EntityManager
。您可以为DevForce服务器端模型定义(并且经常定义)一个属性。@JayTraband您能解释一下“还不支持EF继承或EF多对多映射而没有有效负载”是什么意思吗?@daveywc-继承现在受支持。这个问题更多地讨论了Breeze和实体框架()中的多对多。基本上,映射表需要一个显式实体,并通过两个一对多关联进行导航。但这应该足够开始了。谢谢!另一个问题。我试图在控制器中创建
EFContextProvider contextProvider
字段
MyCustomData
继承自
IdeaBlade.EntityModel.EntityManager
。我添加了一个无参数的ctor,用默认参数调用空的基ctor。但是只要breeze.js(?)请求
contextProvider.MetaData()
,就会抛出
InvalidCastException
MyCustomData
无法转换为
DbContext
。如何解决此问题?
MyCustomData
必须是
DbContext
ObjectContext
。它不能是DevForce
EntityManager
。您可以为DevForce服务器端模型定义(并且经常定义)一个属性。@JayTraband您能解释一下“还不支持EF继承或EF多对多映射而没有有效负载”是什么意思吗?@daveywc-继承现在受支持。这个问题更多地讨论了Breeze和实体框架()中的多对多。基本上,您需要为映射表提供一个显式实体,并通过两个一对多关联进行导航。