我希望能夠在客戶端生成查詢,然後將它們發送到服務器。爲了仍然有安全性,這是我的方法:在客戶端生成查詢
每個客戶都與一個帳戶相關聯。所以客戶端將不得不向服務器發送帳戶ID和查詢。
服務器將收到賬戶ID和查詢。 然後,服務器將執行與該帳戶相關的所有表和行的聯接。
一旦服務器將所有與該帳戶相關的記錄作爲聯合聲明。然後,它將執行客戶端發送的查詢,並將針對連接而不是整個數據庫執行該查詢。
所以我的問題是如何發送一個linq查詢到服務器?比如我會想客戶端發送:
// Id of Account QUERY
object[]{ "AfKX-3451-X4hT-...", myContext.Customers.Where(x=>x.Age>18) }
第二個參數的類型是IQueryable的,因此如果惡意用戶反編譯客戶端應用程序,並改變了查詢話,我不能把它序列化:(
他只會影響他的帳戶,而不會影響整個數據庫
你打算在本地有EF模型的副本嗎? –
這聽起來像是一個壞主意。不僅因爲任何人都可以反編譯這個應用程序,而且主要是因爲它會將所有的業務邏輯拉入客戶端。當客戶端只能獲取或保存粒度數據時,幾乎不存在任何服務器/服務端業務邏輯。但無論如何,它看起來像OData是一個更好的選擇來實現這一點(取決於你談論的應用程序的種類)。另外,如果這涉及到多租戶,那麼在EF中有更好的方法來處理這個問題(例如,每個租戶的模式)。 –