2012-02-02 95 views
1

我已经创建了一个复杂的类型,使用实体框架来存储我所连接到的数据库上的存储过程的结果。我现在正在编写一个Web服务来返回存储过程的结果(即我刚刚创建的复杂类型的集合)。我已被特别要求从WCF服务返回SOAP XML。我的理解是,WCF服务会自动处理根据消费者配置返回最合适的响应 - 那么将返回一个ObjectResult成功地转换为XML?或者我必须首先转换为名单<>?如果是这样 - 是否有比循环遍历对象结果更有效的方法?返回列表<ComplexType>来自ObjectResult <ComplexType> - 它会是XML吗?

非常感谢,任何帮助认真赞赏。

编辑:我必须解释,在这种情况下,消费者将是服务器端代码,我只需要确保它确实返回XML,如果客户端请求它。

回答

4

由于ObjectResult<T>工具IEnumerable<T>,您可以用IEnumerable扩展方法,并使用获得T的数组:

ObjectResult<ComplexType> res = ....; 
ComplexType[] array = res.ToArray<ComplexType>(); // res.ToArray() is also fine because of type inference 

还要确保ComplexType是序列化的。

+0

感谢您的回应Ken,非常感谢。我怎样才能确保ComplexType是可序列化的?我假设它需要被转换为XML。 – 2012-02-02 20:33:01

+0

准确地说:你的类必须是可序列化的,所以它可以转换为XML。例如,请参阅http://msdn.microsoft.com/en-us/library/ms731073.aspx。 – ken2k 2012-02-02 20:42:26

+1

虽然我的类是实体模型中的一个复杂类,这是否使事情变得更复杂? – 2012-02-02 21:00:35

-2

我们可以称之为直接ToList()

using (var ts = new YourEntityFramework()) 
{ 
    List<complex_object> lst = ts.YourSp().ToList(); 
} 

ObjectResult通过使用ToList转换()。那么我们可以在我们的数据访问层和List上使用ObjectResult来传递其他图层。

+0

'DB_EmployeeEntities','GetSPITems'和原始问题之间是否存在关系? – 2014-06-10 08:36:46

+0

由于以下原因不起作用:'ObjectResult '不包含'ToList'的定义,并且没有找到接受类型为'ObjectResult '的第一个参数的扩展方法'ToList' – Jasmine 2017-03-30 23:29:33

相关问题