我使用实体框架创建了一个复杂类型,用于我在连接到的数据库上编写的存储过程的结果。我现在正在编写一个Web服务来返回存储过程的结果(即我刚刚创建的复杂类型的集合)。我被特别要求从WCF服务返回SOAP XML。我的理解是,WCF服务会“自动”处理基于它的消费者配置返回最合适的响应 - 所以会将ObjectResult成功地“转换”为XML吗?或者我必须转换为List<>第一?如果是这样的话 - 有没有比简单地循环对象结果更有效的方法呢?
非常感谢,任何帮助都非常感谢。
编辑:我必须解释一下,在这种情况下,消费者将是服务器端代码,我只需确保 返回XML,如果客户端请求它。答案 0 :(得分: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
可序列化。
答案 1 :(得分:-2)
我们可以直接致电ToList()
using (var ts = new YourEntityFramework())
{
List<complex_object> lst = ts.YourSp().ToList();
}
使用ToList()转换ObjectResult。那么我们可以在我们的数据访问层和List上使用ObjectResult来传递其他层。