【问题标题】:breeze odata and normal web api微风 odata 和普通 web api
【发布时间】:2016-07-01 05:36:03
【问题描述】:

我需要在一个使用 breese 的 Angular 应用程序中拥有两个 entityManager,以便我可以从两个不同的服务中获取数据。一种服务是 OData API,另一种是标准的 Brink Web API(使用 BREW 控制器的 asp.net Web API)。

我的 OData 上下文工作正常,但是当我创建标准上下文时,uriBuilder 属性仍然是 odata,并且当此管理器尝试获取元数据时,它会将 $metadata 值添加到 url 的末尾。

 breeze.config.initializeAdapterInstance('modelLibrary', 'backingStore', true);
            breeze.NamingConvention.camelCase.setAsDefault();

            var serviceName = common.testApiUrl;
            var metadataStore = createMetadataStore();

有人知道这两种设置是否可能吗?

【问题讨论】:

    标签: angularjs asp.net-web-api odata breeze


    【解决方案1】:

    我已经设法让它工作了,诀窍是使用 DataService 来构建实体管理器。这意味着它们是具有自己配置的独立对象,您确实可以一起使用 OData 和 WebApi。

    我是这样做的:

    创建数据服务对象

    var dataService = new breeze.DataService({
                    serviceName: myConfig.testApiUrl,
                    hasServerMetadata: true,
                    adapterName: 'WebApi'
                });
    

    使用此数据服务实例化实体管理器

     function newManager() {
                    var mgr = new breeze.EntityManager({
                        dataService: dataService
                    });
                    return mgr;
                }
    

    然后,您可以根据需要使用相同的模式,只需更改适配器名称即可。有一些额外的配置,但都是标准的微风,所以我没有在这里全部包括在内。

    然后我为每个 EntityManager 创建一个 DataContext 来封装它们,然后我可以在需要时注入我需要的上下文。

    【讨论】:

      猜你喜欢
      • 2013-08-04
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多