2012-01-08 67 views
1

我正在做銀光應用程序,這對我來說真是新鮮事。將字符串查詢傳遞給wcf並從db中檢索數據

是否可以通過將查詢作爲字符串傳遞給wcf並從db中檢索數據來檢索數據。

查詢(LINQ不)可以是任何東西..喜歡選擇X,Y,從A z,其中A = .. 或選擇從x中唯一的名字......

基本上是一個函數,它應該採取串查詢和檢索它。

回答

3

是的,這是可能的。創建一個接受查詢的string的WCF方法。對於退貨類型,您可能需要做更多的工作才能使其易於管理。可能您需要某種類型的DTO對象集合,這需要對DTO對象進行非常靈活的設計或對查詢的允許結果集進行限制。

在SO問題Can I serialize a Data Table or Data Set to transfer over a Web Service in C#?中有關於從Web服務返回數據集/數據表的討論。

正如@ w0lf所指出的,您可能會遇到嚴重的安全風險,您必須考慮。你將要做的是讓任何有權訪問你的WCF服務的人都可以在你的SQL服務器上運行任意查詢。如果您使用精心設計的權限在SQL服務器上的特定帳戶下運行這些查詢,則可以安全地完成此操作。見例如http://data.stackexchange.com允許運行SQL查詢 - 只讀用戶。

通常我認爲提供查詢作爲字符串是一個壞主意,但如果你確實需要它,這確實是可能的。

5

這是可能的,但不要這樣做。

這是一個很大的安全風險:運行Silverlight應用程序的任何人都可以嗅探從應用程序發送到WCF服務的流量,並看到其中一個參數實際上是SQL查詢。

此外,該請求可能會被篡改,這可能會讓用戶訪問您的數據庫上的任意查詢。

相關問題