我有一个使用EF和POCO对象的现有Web应用程序。我希望通过WCF(JSON)公开我的一些对象来改善客户端体验。我有这个工作正常,但我不确定如何处理派生对象(不确定这是否是正确的术语)或IEnumerable匿名对象,如果你愿意。
假设我有3个表格结构如下:
模板
ID
Template
组
ID
Group
实例
ID
TemplateID
GroupID
这显然是一对多的关系。我正确设置了导航属性,获得强类型对象属性非常有用。但是,如何通过线路发送序列化的匿名类型对象。就像一个对象,它发送所有等于groupid = 1的实例,并包含模板和对象的名称。
我是否遗漏了某些内容,或者我是否必须为WCF创建另一个类对象:
WCF对象
InstanceID
TemplateID
TemplateName
GroupID
GroupName
我想我可以改变我的表来解释这一点,但这似乎也是错误的。我知道IEnumerable
对象无法序列化,我知道丢弃对象可能也不是可行的方法。我想以正确的方式做到这一点,但我不知道该怎么做。
您的建议表示赞赏。 此致
答案 0 :(得分:1)
根据您的工作,我建议使用WCF数据服务查看OData。您声明您希望能够发送groupid = 1的所有实例 - OData在此类过滤方面非常出色。
如果您想坚持使用当前的方法并且不使用OData,那么我的第一个问题是为什么要发回匿名类型?你可以做你正在寻找的东西(所有具有groupid = 1的实例)而不发回匿名类型。在您的select子句中,您只需创建具体对象的新实例,而不是新建匿名类型。如果您的查询实际上只是过滤而没有使用selct到匿名类型执行任何有意义的投影,那么我认为没有任何理由发回您的匿名类型。