0

OdataBreezeJSSample を自分のプロジェクトに適応させようとしています。メタデータが呼び出されて入力されていますが、私のクエリは次のとおりです。

var people = breeze.EntityQuery .from("Users") .using(manager) .select('Email') .execute() .then(function() { }) .catch(function(err) { var isEmpty = manager.metadataStore.isEmpty(); });

エラーメッセージで失敗しています:

エラー: 名前で「タイプ」を見つけることができません:「ユーザー:#Default」。最初に必ずクエリを実行するか、fetchMetadata を呼び出してください。

私のプロジェクトでmetadataStoreを調べると、次のように表示されます。

メタデータの検査 (機能していません)

動作するサンプルを調べると、メタデータが異なって見えます:

メタデータの検査 (作業中)

私の知る限り、私のセットアップ コードはサンプルと一致しています。また、同じバージョンのライブラリを使用しています。クエリが発生することはありません。実行される唯一の呼び出しは、$metadata を取得することです。

fetchMetadata() を呼び出してみましたが、/$metadata への呼び出しが重複するだけです。

このエラー メッセージの原因は何ですか?

アップデート:

こちらがEDMXです。動作サンプルでスキーマが1つしかないことを確認しました。この余分なスキーマがどこから生成されているのかわかりません。EDM を生成するコードはすべてサンプルと一致します。

<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="SCATowel.Models" xmlns="http://schemas.microsoft.com/ado/2009/11/edm"> <EntityType Name="User"> <Key> <PropertyRef Name="Id" /> </Key> <Property Name="Id" Type="Edm.Int32" Nullable="false" /> <Property Name="Name" Type="Edm.String" /> <Property Name="Login" Type="Edm.String" /> <Property Name="Email" Type="Edm.String" /> <Property Name="IsAppAdmin" Type="Edm.Boolean" Nullable="false" /> <NavigationProperty Name="Sites" Relationship="SCATowel.Models.SCATowel_Models_User_Sites_SCATowel_Models_Site_SitesPartner" ToRole="Sites" FromRole="SitesPartner" /> <NavigationProperty Name="Settings" Relationship="SCATowel.Models.SCATowel_Models_User_Settings_SCATowel_Models_Setting_SettingsPartner" ToRole="Settings" FromRole="SettingsPartner" /> </EntityType> <EntityType Name="Setting"> <Key> <PropertyRef Name="Id" /> </Key> <Property Name="Id" Type="Edm.Int32" Nullable="false" /> <Property Name="SiteListLocation" Type="Edm.String" /> <NavigationProperty Name="User" Relationship="SCATowel.Models.SCATowel_Models_Setting_User_SCATowel_Models_User_UserPartner" ToRole="User" FromRole="UserPartner" /> </EntityType> <EntityType Name="Site"> <Key> <PropertyRef Name="Id" /> </Key> <Property Name="Id" Type="Edm.Int32" Nullable="false" /> <Property Name="Title" Type="Edm.String" /> <Property Name="Url" Type="Edm.String" /> <Property Name="IsSiteAdmin" Type="Edm.Boolean" Nullable="false" /> <Property Name="IsSiteOwner" Type="Edm.Boolean" Nullable="false" /> <NavigationProperty Name="User" Relationship="SCATowel.Models.SCATowel_Models_Site_User_SCATowel_Models_User_UserPartner" ToRole="User" FromRole="UserPartner" /> </EntityType> <Association Name="SCATowel_Models_User_Sites_SCATowel_Models_Site_SitesPartner"> <End Type="SCATowel.Models.Site" Role="Sites" Multiplicity="*" /> <End Type="SCATowel.Models.User" Role="SitesPartner" Multiplicity="0..1" /> </Association> <Association Name="SCATowel_Models_User_Settings_SCATowel_Models_Setting_SettingsPartner"> <End Type="SCATowel.Models.Setting" Role="Settings" Multiplicity="*" /> <End Type="SCATowel.Models.User" Role="SettingsPartner" Multiplicity="0..1" /> </Association> <Association Name="SCATowel_Models_Setting_User_SCATowel_Models_User_UserPartner"> <End Type="SCATowel.Models.User" Role="User" Multiplicity="0..1" /> <End Type="SCATowel.Models.Setting" Role="UserPartner" Multiplicity="0..1" /> </Association> <Association Name="SCATowel_Models_Site_User_SCATowel_Models_User_UserPartner"> <End Type="SCATowel.Models.User" Role="User" Multiplicity="0..1" /> <End Type="SCATowel.Models.Site" Role="UserPartner" Multiplicity="0..1" /> </Association> </Schema> <Schema Namespace="Default" xmlns="http://schemas.microsoft.com/ado/2009/11/edm"> <EntityContainer Name="Container" m:IsDefaultEntityContainer="true"> <EntitySet Name="Users" EntityType="SCATowel.Models.User" /> <EntitySet Name="Settings" EntityType="SCATowel.Models.Setting" /> <EntitySet Name="Sites" EntityType="SCATowel.Models.Site" /> <AssociationSet Name="SCATowel_Models_User_Sites_SCATowel_Models_Site_SitesPartnerSet" Association="SCATowel.Models.SCATowel_Models_User_Sites_SCATowel_Models_Site_SitesPartner"> <End Role="SitesPartner" EntitySet="Users" /> <End Role="Sites" EntitySet="Sites" /> </AssociationSet> <AssociationSet Name="SCATowel_Models_User_Settings_SCATowel_Models_Setting_SettingsPartnerSet" Association="SCATowel.Models.SCATowel_Models_User_Settings_SCATowel_Models_Setting_SettingsPartner"> <End Role="SettingsPartner" EntitySet="Users" /> <End Role="Settings" EntitySet="Settings" /> </AssociationSet> <AssociationSet Name="SCATowel_Models_Setting_User_SCATowel_Models_User_UserPartnerSet" Association="SCATowel.Models.SCATowel_Models_Setting_User_SCATowel_Models_User_UserPartner"> <End Role="UserPartner" EntitySet="Settings" /> <End Role="User" EntitySet="Users" /> </AssociationSet> <AssociationSet Name="SCATowel_Models_Site_User_SCATowel_Models_User_UserPartnerSet" Association="SCATowel.Models.SCATowel_Models_Site_User_SCATowel_Models_User_UserPartner"> <End Role="UserPartner" EntitySet="Sites" /> <End Role="User" EntitySet="Users" /> </AssociationSet> </EntityContainer> </Schema> </edmx:DataServices> </edmx:Edmx>

4

3 に答える 3

1

UsersコレクションWebApiConfig.csApp_Startフォルダーで公開しましたか?

public static IEdmModel GetEdmModel()
{
     ODataModelBuilder builder = new ODataConventionModelBuilder();
     builder.EntitySet<User>("Users");
     builder.Namespace = "SCATowel.Models"; 
     return builder.GetEdmModel();
}

出典: オープンデータ (OData)

于 2014-03-13T15:23:24.970 に答える
0

私も同じ問題を抱えていました。

EF からのメタデータがそよ風に適していないからだと思います。

ここで説明されているように、 http ://www.breezejs.com/documentation/odata-server のように nuget を使用して EdmBuilder をインストールするだけです。

Install-Package Breeze.EdmBuilder

そして、これをWebApiConfig.csに追加します。

config.Routes.MapODataRoute(
    routeName: "odata",
    routePrefix: "odata",
    model: EdmBuilder.GetEdm<MyDbContext>(),
    batchHandler: new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer)
);

そして、それはうまくいくはずです。

于 2014-06-28T14:29:31.397 に答える