我在 SQL Server 上有一堆存储过程,每个都有一个输出参数@res_xml xml output
。这些中的每一个都将返回一个 XML 片段@res_xml
。
“片段”是指 XML 片段尚未最终确定,可能很容易包含多个根节点(ConformanceLevel.Fragment)。
SQL Server 对 XML 片段没有任何问题,可以很好地存储它们,并且当一个存储过程想要在其自己的输出中包含另一个存储过程的输出时,可以轻松地重用它们。
但是,Linq2Sql 不支持这一点。它将一个 XML 参数映射到单个XElement
,这会抛出一个 XML 片段。
我不想更改所有存储过程以始终将其输出包装在根节点中。这将是大量的输入,当在存储过程之间重用 XML 时需要明确地抛出这个虚假的根节点,并且它会破坏现有的支持片段的非 linq2sql 客户端。所以我要按摩的是linq。
建议将XML
可能包含片段的参数映射到String
。我同意,但是有没有办法指示 linq2sql 映射xml
到string
而不是XElement
?
我目前做的是:
- 将过程从服务器资源管理器拖到 linq2sql 设计器中。生成代码。
- 进入
DataClasses.designer
并复制生成的代码以调用程序。 - 将此代码粘贴到
partial class DataClassesX
. - 手动全部替换
System.Xml.Linq.XElement
为System.String
. - 回到设计器,删除拖入的程序。
这有效,但很烦人。
我不能就地替换,因为这会被设计师覆盖。