首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Breeze | datajs -没有数据处理程序

Breeze | datajs -没有数据处理程序
EN

Stack Overflow用户
提问于 2015-09-22 16:54:45
回答 2查看 701关注 0票数 0

我刚接触微风世界,但我想在我的应用程序中使用它。我尝试使用基于Northwind.sdf数据库的简单ASP.Net Api OData服务对其进行测试。

在DataService项目中,我有一个简单的控制器:

代码语言:javascript
运行
复制
[BreezeController]
public class CategoriesController : ODataController
{
    readonly EFContextProvider<NORTHWNDContext> contextProvider =
        new EFContextProvider<NORTHWNDContext>();

    [HttpGet]
    [EnableBreezeQuery]
    public IQueryable<Category> GetCategories()
    {
        return contextProvider.Context.Categories;
    }

    [HttpPost]
    public SaveResult SaveChanges(JObject saveBundle)
    {
        return contextProvider.SaveChanges(saveBundle);
    }
}

在客户端,我调用:

代码语言:javascript
运行
复制
breeze.config.initializeAdapterInstance("dataService", "webApiOData", false);

var manager = new breeze.EntityManager({
    dataService: new breeze.DataService({
        serviceName: "http://localhost:18384/",
        hasServerMetadata: true,
        adapterName: "webApiOData"
    })
});

breeze.EntityQuery.from('Categories').using(manager).execute();

此方法中的datajs.js文件中出现问题

代码语言:javascript
运行
复制
var dispatchHandler = function (handlerMethod, requestOrResponse, context) {
    /// <summary>Dispatches an operation to handlers.</summary>
    /// <param name="handlerMethod" type="String">Name of handler method to invoke.</param>
    /// <param name="requestOrResponse" type="Object">request/response argument for delegated call.</param>
    /// <param name="context" type="Object">context argument for delegated call.</param>

    var i, len;
    for (i = 0, len = handlers.length; i < len && !handlers[i][handlerMethod](requestOrResponse, context); i++) {
    }

    if (i === len) {
        throw { message: "no handler for data" };
    }
};

它总是抛出“无数据处理程序”异常,但我不明白。已经有一些默认的odata处理程序,比如

代码语言:javascript
运行
复制
var handlers = [odata.jsonHandler, odata.atomHandler, odata.xmlHandler, odata.textHandler];

有人能帮我解决这个问题吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-09-22 23:54:42

我认为你的控制程序中缺少元数据

代码语言:javascript
运行
复制
public string Metadata()
    {
        return _contextProvider.Metadata();
    }
票数 0
EN

Stack Overflow用户

发布于 2017-01-03 23:43:29

如果您的服务使用OData版本4,那么DataJs和固有的BreezeJs (使用datajs)将抛出此异常。

对于这一点,Breeze有一个公开的问题:https://github.com/Breeze/breeze.js/issues/39。看起来你可以使用BreezeJs适配器来解决OData 4.0版的问题:https://github.com/tschettler/breezejs-odata4-adapter

以下是截至2014年5月的状态报告,证实了上述内容:http://www.odata.org/blog/status-updates-of-odata-libraries-that-support-odata-version-4-0/

对于Olingo版本4,您可以使用另一个名为OData的javascript库,如下所述:http://olingo.apache.org/doc/javascript/index.html

以下是具有指定支持版本的库的摘要:http://www.odata.org/libraries/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32712606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档