4

文字列が EntityQuery に渡される検索フィールドのテキスト入力があります。クエリに一重引用符が含まれるたびに、次のようなメッセージが表示されます。

「substringof(O'Malley,FirstName) eq true」の 39 番目の位置に、終了していない文字列リテラルがあります。

次のようにクエリをハードコーディングするだけでも発生します。

var query = breeze.EntityQuery
                .from("Users")
                .expand("GroupUsers.Group")
                .where("lastName", "contains","O'Malley")
                .skip(skipAmt)
                .take(pageSize)
                .inlineCount(true);

二重の一重引用符を実行するか、\' を実行して一重引用符をエスケープしようとしましたが、それでもエラーが返されます。これは、二重引用符でも同様に発生します。文字列リテラル文字をエスケープする適切な方法は何ですか?

4

1 に答える 1

4

これは再現できません。' を 2 倍にするだけで、1 つの ' をエスケープできるはずです。たとえば、次のクエリはv 1.2.8で問題なく動作します。

 var q = EntityQuery.from("Employees")
        .where("lastName", "contains", "O''Malley");

クエリを「句」だけに「単純化」しても問題は発生しますか?

于 2013-04-11T06:40:14.873 に答える