使用Linq2Sql使用XML片段

使用Linq2Sql使用XML片段,xml,sql-server-2008,linq-to-sql,mapping,entity-relationship,Xml,Sql Server 2008,Linq To Sql,Mapping,Entity Relationship,我在SQL Server上有一组存储过程,每个存储过程都有一个输出参数@res\u xml output。每一个都将在@res\u XML中返回一个XML片段 我所说的“片段”是指XML片段没有最终确定,可能很容易包含多个根节点() SQL Server对XML片段没有任何问题,可以很好地存储它们,并且在一个存储过程希望在其自己的输出中包含另一个存储过程的输出时可以重用它们 但是,Linq2Sql不支持这一点。它将把一个XML参数映射到一个单独的XElement,然后抛出一个XML片段 我不想将

我在SQL Server上有一组存储过程,每个存储过程都有一个输出参数
@res\u xml output
。每一个都将在
@res\u XML
中返回一个XML片段

我所说的“片段”是指XML片段没有最终确定,可能很容易包含多个根节点()

SQL Server对XML片段没有任何问题,可以很好地存储它们,并且在一个存储过程希望在其自己的输出中包含另一个存储过程的输出时可以重用它们

但是,Linq2Sql不支持这一点。它将把一个XML参数映射到一个单独的
XElement
,然后抛出一个XML片段

我不想将所有存储过程更改为总是将其输出包装在根节点中。这将需要大量的输入,在存储过程之间重用XML时需要显式地抛出这个伪造的根节点,并且它将破坏现有的、支持片段的非linq2sql客户机。所以我要去按摩的是林克

可能包含片段的
XML
参数被映射到
String
。我同意,但是有没有一种方法可以指示linq2sql将
xml
映射到
string
而不是
XElement


我现在做的是:

  • 将过程从服务器资源管理器拖到linq2sql设计器中。生成代码
  • 进入
    DataClasses.designer
    并复制生成的代码以调用过程
  • 将此代码粘贴到
    部分类DataClassesX
  • 手动将所有
    System.Xml.Linq.XElement
    替换为
    System.String
  • 返回设计器并删除拖入的过程
这很有效,但很烦人。

我不能就地替换,因为这会被设计器覆盖。

为什么要保留无效的xml(片段)?这似乎是一个问题,当其他部分使用数据时会再次出现,即使它在linq2sql中得到了解决。@RyanGates我不想保留它们。正如我所说的,每个过程都不知道它的输出是否是“最终的”,它们可以以任何组合进行链接。客户端(唯一知道谁是“最终”的代码)最终添加了一个根节点,SP对此一无所知。我想我会花时间重新键入过程,并亲自生成完全合格的xml输出。一旦你这么做了,LINQ应该能很好地工作。