1

OData と JavaScript を使用して、エンティティの数値 ID フィールドのあいまい検索を実行する方法を研究しています。これまでのところ、私が探している答えは見つかりませんでした。「Startswith」フィルター オプションを使用して他の edm.string 列を完全にフィルター処理できますが、他の非文字列型を渡そうとすると、サーバーから型エラー応答が返されます。

私がデータベースを制御するアプリケーションでは、必要なビューを作成し、ビューの数値型を文字列に変換することで、これをうまく回避できました。ただし、ユーザーが ID をワイルドカード検索できるようにするためだけにデータ セット全体のビューを作成するのは少しやり過ぎのように思えます。

誰かがこれに対する良い解決策を見つけましたか? ありがとうございました!

4

1 に答える 1

2

残念ながら、最良の解決策の 1 つ (ビューの作成) を既に発見していると思います。あいまい検索を実行できるサービス操作を作成することもできます。

バックエンドには何を使用していますか? これは LINQ-to-Entities ではサポートされていませんが、次のようなサービス操作を作成できる可能性があります (機能することを証明するために、 のToList()後に呼び出しを詰め込むことができますProducts。デプロイしないように注意してください)。そのようなものを本番環境に:)):

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class ScratchService : DataService<ScratchContext>
{

    [WebGet]
    public IQueryable<Product> FuzzySearch(string idStartsWith)
    {
        var context = new ScratchContext();
        return context.Products.Where(p => p.ID.ToString().StartsWith(idStartsWith));
    }
    // ...
}

これは私たちがよく耳にする質問ではありませんが、私は間違いなくチームに持ち込むことができます。OASIS の標準化プロセスを開始するとき、それについて考えることができます。

于 2012-07-23T16:12:39.597 に答える