2012-01-08 12 views
1

私には本当に新しい銀色のアプリをやっています。wcfに文字列クエリを渡し、dbからデータを取得する

クエリをStringとして渡してwcfにデータを取得し、dbからデータを取得することは可能ですか?

クエリ(LINQではない)を選択し、X、Y、= .. またはXは異なる名前を選択...

は基本的に機能する文字列を取るべきであるAからZのような...何でもかまいませんそれを検索して取得します。

答えて

3

はい可能です。クエリであるstringを受け付けるWCFメソッドを作成します。戻り値の型については、おそらくそれを扱いやすくするためにいくつかの作業を行う必要があります。おそらく、DTOオブジェクトのコレクションの種類が必要です。これには、非常に柔軟なDTOオブジェクトの設計か、クエリの許容される結果セットに対する制限が必要です。

Can I serialize a Data Table or Data Set to transfer over a Web Service in C#? SO質問のWebサービスからデータセット/データセットを返すことについての議論があります。

@ w0lfが指摘するように、重大なセキュリティ上のリスクが考慮される必要があります。あなたがしていることは、WCFサービスへのアクセス権を誰にも与えて、SQLサーバー上で任意のクエリを実行できるようにすることです。注意深く作成された権限を持つSQLサーバー上の特定のアカウントでこれらのクエリを実行すると、安全に実行できます。例えば、 http://data.stackexchange.com - 読み取り専用ユーザーでSQLクエリを実行できるようにします。

一般的に私は文字列としてクエリを提供するのは良い考えではないと思いますが、実際にそれをやり直すのは本当に可能です。

5

可能ですが、これはしないでください。

Silverlightアプリケーションを実行しているユーザーは、アプリからWCFサービスに送信されるトラフィックを傍受し、パラメータの1つが実際にSQLクエリであることがわかる可能性があります。

また、要求が改ざんされる可能性があります。これにより、ユーザーはデータベース上で任意のクエリを実行できるようになります。