3

ナビゲーション プロパティの検証に問題があります。それがバグなのか、それとも期待どおりに機能しないのかはわかりません。

彼の外部キー (私の場合は int 型) で必要なナビゲーション プロパティがある場合、バリデーターが正常に追加され、int は null にできないため、デフォルト値 0 が割り当てられますが、エンティティが検証されているときは、プロパティの値は (0) で、正しいと見なされます。エンティティが無効であると予想しました。

それはバグですか、それとも正しい動作ですか?

ご挨拶。

4

2 に答える 2

1

良い質問です。これはバグや機能ではないと思います。また、非同期検証オプションも考慮しません。

代わりに、FK プロパティが 0 の場合に無効であることを宣言するカスタム検証を FK (またはプロパティ) に追加します。はい、これはエンティティが作成時に無効な状態であることを意味します。それについては何もできません。「まだわからない」を意味するセンチネル値として「0」を使用しています。検証とは、「... エンティティは、私が知るまで無効である」ことを意味します。

ところで、Breeze は 0 が無効であると想定できません。これは、関連エンティティに対する有効な FK である可能性があります。

この問題は、FK に固有のものではありません。'quantity=0' で新しい注文品目を作成するときにそれがあり、ビジネス ルールでは >0 である必要があります。この型では SOMETHING を指定する必要がありますが、アプリオリに正しい答えを提供することはできません。繰り返しますが、Breeze は「0」が悪い値であると想定することはできません。それを指定する必要があります。

どちらのシナリオにもバグ自体はありません。どちらも「正しいことをする」ために開発者の注意が必要です。

于 2012-12-20T01:02:45.997 に答える
0

いい質問です。

Breeze は、データストア/データベースへのラウンドトリップを実行せずに外部キーだけを実際に検証することはできません。実行した場合、検証は非同期操作になります。現在、breeze は非同期検証をサポートしていませんが、シナリオによってはこれがまさに必要になる場合があります。

非同期検証には、対処する必要があるいくつかの問題があります。最も重要なのは、最初の検証が完了する前に、保存や再クエリ、または fk フィールドへの別の変更などの別の操作が発生する可能性があることです。これらはすべて処理できますが、さらに複雑になります。

これが役に立つと思われる場合は、 Breeze UserVoiceに追加してください。私たちはこれらの提出物を真剣に受け止めています。

于 2012-12-19T16:28:29.707 に答える