繁体   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