0

別のアプリケーション インスタンス/ドメインでホストされている webapi odata サービスをクエリするために、breezejs を使用しようとしています。

BreezeJS の公式サイトで説明されているようにすべてを設定しました。このブログの投稿では、サービス アドレスが別のドメインにあることを除いて、コードは同じです。

コード例は次のとおりです。

    var serverAddress = 'http://mydomain.com:49074/odata/';
    breeze.config.initializeAdapterInstances({ dataService: "OData" });

    var manager = new breeze.EntityManager(serverAddress);
    var query = breeze.EntityQuery.from('Technology').where("Id", ">", 3); //!!!not executed

    manager.executeQuery(query, function (data) {
        debugger;
        alert('tada');
    });

このような形式のクエリは実行されませんが、機能するはずです。そして、そのような応答を取得します:

ヘッダー:

リクエスト URL: http://mydomain.com:49074/odata/ $metadata
リクエスト方法:GET
ステータス コード:200 OK

応答:

<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx">
  <edmx:DataServices m:DataServiceVersion="3.0" m:MaxDataServiceVersion="3.0" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
    <Schema Namespace="Devup.Model" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
      <EntityType Name="Technology">
        <Key>
          <PropertyRef Name="Id" />
        </Key>
        <Property Name="Id" Type="Edm.Int32" Nullable="false" />
        <Property Name="Name" Type="Edm.String" Nullable="false" />
      </EntityType>
    </Schema>
    <Schema Namespace="WebAPIODataWithBreezeConsumer.Models" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
      <EntityContainer Name="Container" m:IsDefaultEntityContainer="true">
        <EntitySet Name="Technology" EntityType="Devup.Model.Technology" />
      </EntityContainer>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>

ただし、クエリを次のように更新すると、次のようになることに気付きました。

var query = Breeze.EntityQuery.from('Technology?').where("Id", ">", 3);

また

var query = Breeze.EntityQuery.from('Technology/').where("Id", ">", 3);

次に、バックエンド コード (ブレーク ポイント) にヒットします。結果はフィルタリングされませんが、バックエンドにヒットします...

このような奇妙な動作の理由と、この問題を解決する方法を知っている人はいますか

4

1 に答える 1