【问题标题】:Wireing Breeze (with Angular) to an existing WCF Data Service将 Breeze(使用 Angular)连接到现有的 WCF 数据服务
【发布时间】:2014-04-26 10:39:42
【问题描述】:

短片

我有一个现有的 WCF 数据服务,我想通过 Breeze 连接它以在 AngularJS SPA 中使用。

谁能展示一个新手级别的示例,说明如何在不访问实际数据库的情况下做到这一点(仅 OData 服务)?


长篇

我有一个 WCF 数据服务已被 WPF 应用程序使用。

我正在尝试 Web 开发,并希望使用 Breeze 连接到该服务。万一这很重要,我正在使用 Angular(并且正在通过 HotTowel.Angular nuget 包进行设置)。

我已经进行了大量的谷歌搜索,但我被卡住了。

我可以从搜索中看到两种方法:


第一个

Make 是在我的 Web 应用的服务器端制作一个 Breeze 控制器。

我看到的问题是元数据。根据我有限的理解,我需要告诉微风我的 WCF 数据服务的所有元数据。我知道如何从我的 WCF 数据服务(url + $Metadata)中获取元数据,但我不知道如何告诉 Breeze。


第二个

这种方式在实现上比较模糊。我从这个问题的公认答案中得到它:Breeze.js with WCF Data Service

基本上这里的答案似乎不起作用。它依赖于我似乎找不到的名为 entityModel 的东西(我有一个 entityManager,但没有 entityModel。并且 entityManager 没有显示 entityModel 的属性。


最后我最喜欢第二种方法的想法。这样我就可以直接连接到我的 odata 服务,而无需我的 Web 应用程序具有“中间”服务器组件。 但我很乐意接受任何不需要实体框架来连接到我的数据库的东西。

我尝试了第二个选项的几种变体,但我似乎无法让它发挥作用。我还尝试了微风样品。它有一个用于 OData,但它仍然依赖于将实体框架连接到源数据库。

为了清楚地总结我的要求:我正在寻找一个连接到现有 WCF 数据服务的 Breeze 示例。

【问题讨论】:

  • 您的 WCF 数据服务是 OData 服务吗?或者它是一个任意的 WCF SOAP 服务?我问是因为您提到您的 WCF 数据服务响应 url+$Metadata 这使它听起来像 WCF OData 服务。如果是,与 WCF OData 服务对话的指南(您链接到的指南)如何让您失望?它应该像选择 Breeze OData 数据服务适配器并定位完整的 WCF 服务 URL 一样简单。

标签: javascript angularjs breeze wcf-data-services


【解决方案1】:

我们很遗憾您被那个过时且(因此)不正确的旧 StackOverflow 答案误导了。不再有称为entityModel 的类型。

我在那里更新了答案,并在这里重复了同样的建议。

配置 Breeze 以使其与标准 OData 源(例如 WCF OData 服务)通信的推荐方法是

breeze.config.initializeAdapterInstance('dataService', 'OData', true);

以下是定义EntityManager 和查询服务的方法:

// specify the absolute URL to the WCF service address
var serviceName = "http://localhost:9009/ODataService.svc";

var em = new breeze.EntityManager(serviceName);

var query = breeze.EntityQuery.from("Customers")
    .where("CompanyName", "startsWith", "B")
    .orderBy("City");

em.executeQuery(query).then(function(data) {
   // process the data.results here.
});

有一些关于这个主题的文档here

Web API OData 服务在几个方面不同于 WCF OData 服务。但是您仍然可以在Angular Web API OData sample 中找到价值。

【讨论】:

  • 我仍在努力让它发挥作用。如果我真的让它工作,我会回来并接受答案。 (现在我收到Unable to locate a 'Type' by the name: MyEntityHere 错误。我猜它没有正确加载元数据。)
  • 此代码真的对您的 OData 服务有效吗?当我尝试使用我的 OData 端点时,我收到了加载元数据的请求。应该自动完成,但我也尝试过手动完成。无论如何,我很欣赏你的回应,但事实上,有些东西不见了。我似乎无法克服这个错误。
  • 感谢沃德的帮助!我遇到了 Breeze 不喜欢我的 OData 元数据的问题。如果您有兴趣,请查看此答案:stackoverflow.com/a/23371102/16241
  • 在使用 WCF OData 时,这是一个重要的问题,也是非常常见的绊脚石。我需要在我们的文档中说明这一点,因为根本原因超出了我们的控制范围。
  • 您确定您的意思是 Web API OData 吗?我正在使用 WCF OData,我遇到了这个问题。 Brian 告诉我的培训专门针对 WCF 数据服务。我没有使用过 Web API OData,所以我不能说它是否也受到影响。但对我来说,这是 WCF 数据服务 (OData) 的一个问题,当我将这两个值设为相同时,该问题已得到解决。
猜你喜欢
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多