我有以下的C#类SQL服务器读取XML值作为空字符串
public class Data
{
public string A {get;set;}
public string B {get;set;}
public string C {get;set;}
}
我在我的代码创建了这样一个实例:
var d = new Data { A = "abc", B = string.Empty, C = null};
我需要将其转换为XML和通它在SQL Server的一个存储过程2008
我做到这一点使用:
var xml = new XElement("Data",
new XElement("A", d.A),
new XElement("B", d.B),
new XElement("C", d.C));
在存储过程中生成的XML:
<Data>
<A>abc</A>
<B></B>
<C />
</Data>
所以,有一个空字符串的空值之间的差异。
然后在SQL中,我使用下面的语法来读取XML:
INSERT INTO #myTable
SELECT
nref.value('(A/text())[1]', 'uniqueidentifier') [A],
nref.value('(B/text())[1]', 'uniqueidentifier') [B],
nref.value('(C/text())[1]', 'uniqueidentifier') [C],
FROM @DataXml.nodes('/Data') AS R(nref);
但是,这为我提供B和C都为NULL,其中B应该是空字符串。
我该如何调整以确保空值保留为空值,空字符串保留为空字符串?
由于
如果你说:“RAD的XML”你的意思是“读XML”? –
为什么你需要将它转换为XML传递给存储过程,只是将它从XML中分离出来,返回到离散的字段中?只需将离散值传递到存储过程即可。 –
最大,对于“rad”,读取“读取”。这条消息中的XML非常简单,我的实际XML更加复杂,并且允许我将一批对象传递给我的sproc,然后可以遍历它们。 – DrGriff