0

こんにちは、Breeze にメタデータ ストアを作成させようとしていますが、メッセージで失敗します NamingConvention for this server property name does not roundtrip properly

すぐに使用できるWeb APIで同じ自己参照ループがあり、解決できましたが設定できました json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore

どんな助けや解決策も大歓迎です。

ありがとう

4

3 に答える 3

1

わかりましたので、私は自分の質問を解決しました。私のテーブル名はすべて小文字で始まっていたので、ラウンド トリップ エラーが発生したのは、Breeze によって RefLookup と見なされていたが、refLookup としてエンティティが参照されていた refLookup などのエンティティを参照していたためでした (キャメル ケースではありません)。それがエンティティの名前です)。そのため、データベース内のすべてのテーブルに大文字で名前を付けました。将来誰かに役立つことを願っています。

于 2013-07-04T10:15:59.210 に答える
0

BreezeNamingConvention機能は、エンティティ タイプ名のエイリアシングではなく、プロパティのエイリアシングをサポートします。したがって、エンティティ タイプ名のスペルは、サーバー側のタイプ名と正確に一致する必要があります ... キャメルケーシングの命名規則を選択したり、独自のカスタムプラグインを作成したりした場合でも.NamingConvention

そのため、テーブル/エンティティ クラス名の大文字と小文字の区別に問題があったことに驚いています。

このエラーを再現できません。これが私が試したものです

  • データベースに「foo」テーブルを追加しました
  • 対応するfooクラスを作成しました
  • foosクエリ アクション メソッドとして Web API コントローラーから公開しました
  • Breeze クライアントですべてのクエリを実行foos

Breeze クライアントは問題なく (2 つの)fooエンティティを返しました。

NamingConventionクライアントの をいじろうとしたわけではないことに注意してください。デフォルトのままにしました...つまり、すべてのクライアントエンティティプロパティ名は、対応するサーバープロパティ名と同じです。前述したように、NamingConventionはエンティティ タイプ名を処理せず、メタデータにはサーバーとクライアントのエンティティ タイプ名の違いを表すものはありません。

そうではないと思いますか?サンプルを提供できますか?

強い注意: Json.NET プロパティの命名規則を変更しないでください。すべての名前エイリアスは、クライアントの Breeze によって実行される必要があります。

[BreezeController]一般に、属性がその値を設定している場合は、Json.NET 構成設定を変更しないでください。私が考えることができる唯一の例外は、null 値の処理です。Breeze は、Json.NET に null を無視するように指示します。それは間違いだと思います...必要に応じて、Json.NETにnull値を送信するように指示できます。

于 2013-07-05T02:59:03.383 に答える