在实体框架6.1.2中解析XML结果

时间:2016-05-27 19:33:23

标签: c# sql-server entity-framework

我正在尝试从作为XML返回的SQL Server中解析结果(在查询中使用FOR XML)。

我有一个.EDMX文件,它将存储过程映射到一个复杂类型(有一列:Name = XML_F52E2B61-18A1-11d1-B105-00805F49916B,EDMType = String,Db Type = ntext,Nullable = true ,MaxLength = Max)。

当我调用存储过程时,结果类型为:

ObjectResult<"ResultName">

当我尝试将其写入控制台时,我收到错误消息

  

数据阅读器与指定的&#34;&#34; ResultName&#34;&#39;不兼容。该类型的成员&#39; XML_F52E2B61_18A1_11d1_B105_00805F49916B&#39;在数据阅读器中没有相应的具有相同名称的列。

因此,因为我使用复杂类型收到错误消息,所以我决定尝试将结果更改为标量:string。

我现在在输出窗口(使用System.Diagnostics.Debug.WriteLine("objectName"))得到的是:

(System.Data.Entity.Core.Objects.ObjectResult`1[System.String])

如果我尝试对结果做任何事情,我会收到错误消息,如果我预告或结束它我会收到错误

  

来自物化系统.Int32&#39;的指定演员表。输入&#39; System.String&#39;类型无效

这到底是什么意思? (事实上​​,如果我只对返回的对象执行.Count(),我会得到相同的错误消息)

所以我想我最紧迫的问题是:我如何通过存储过程从SQL Server获取XML结果?

注意:我不是在谈论数据库中的XML列,我说的是将查询结果作为XML返回。

非常感谢任何帮助。

谢谢,

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人,这个问题与我正在处理的4个不同的SQL Server实例(Local,Dev,Stage,Prod)以及我使用不正确的实例来获取此信息有关。

我创建了一个返回XML的存储过程,我将其添加到Local实例中,然后当我运行我的测试应用程序时,我正在寻找Dev来获取信息。由于存储过程不存在,我遇到了错误。很抱歉这个长期的问题最终被注意到但是我犯了一个错误。

卫生署。

谢谢, Ť