簡體   English   中英

WCF 服務(實體)¨linq quert select db table 通過參數 webget 可能嗎?

[英]WCF service (entity) ¨linq quert select db table through parameter webget possible?

我想問一下是否可以通過webget參數選擇實體數據庫表? 這是它可能的樣子:

[WebGet]
    public IQueryable<TestTable> GetAllCallers(string select, string **table**)
    {

        //testCDREntities context = this.CurrentDataSource;

            var Callers = from d in this.CurrentDataSource.**table**
                          select d ;

        return Callers;



    }

當然這不起作用,但有沒有辦法讓它起作用? 我希望有人能幫我解決這個問題:)

這是不可能的。 您無法序列化IQueryable<T> ,因此您無法通過 WCF 發送它。

通常的方法是將您需要的屬性打包到一個可序列化的數據傳輸對象中。 我們正在使用Automapper將我們的域實體映射到 DTO。

如果您是鐵桿,請查看有關序列化 func 的討論。

然而,可以序列化TestTable[] TestTable 必須是可以實例化的已知類(即不是抽象的,不是接口)。 此外,數據契約中使用的所有屬性都必須是可序列化的。

return Callers.ToArray();

.ToArray()執行您的查詢,因此現在您發送的是實際數據,而不是抽象語法樹。

- 編輯 -

抱歉,我完全錯誤地認為不可能通過網絡發送 IQueryable。 我完全沒有注意到我們在這里談論的是 OData 服務。 我一直在考慮 SOAP 服務。 感謝 Rytmis 解決了這個問題。 谷歌搜索正確的搜索詞也出現了這個討論: Expose IQueryable Over WCF Service

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM