在WCF中动态创建类作为DataContract

时间:2011-06-08 13:17:14

标签: c# wcf linq expression-trees dynamic-linq

有没有办法从WCF方法返回DynamicClass类型的对象数组?

我在我的WCF服务中使用Dynamic Linq Library,以便根据客户端的请求,在数据库表的select列中使用{{3}}。客户端代码应如下所示:

//client side code
string whereClause = "FeatureId >= 6 and FeatureId <= 180";
string selectClause = "New(FeatureName as Name, FeatureId as Id)";
client.RequestAsync("Feature", "FeatureDB", whereClause, selectClause);

功能是表格的名称,我想从select只有两列,即。 FeatureName FeatureId ,满足where子句中的条件。

这里的问题是查询在服务器上运行正常,但WCF无法将其发送回客户端。我的猜测是,动态创建的只定义所选列的类未声明DataContract,因此WCF无法使用它。

那么解决这个问题的方法呢?

还是其他选择?目标是,我不想返回数据库表的所有列,因为我不需要在客户端的所有列。所以我没有看到将所有列发送回客户端的任何意义,客户端无论如何都会丢弃它。

2 个答案:

答案 0 :(得分:0)

您可以通过使用Reflection来使用适当的属性来装饰字段来解决此问题,但是这可能仍会对使用WCF服务的任何客户端进程造成问题,因为生成的服务合同部分将是非确定性的,即模式中的xs:any。

最好尽可能尝试强力键入您的WCF合同。

答案 1 :(得分:0)

您是否考虑过实施WCF Data Service