我找不到这个问题的记录答案。 如果我使用SqlXml对象将xml传递给StoredProc,谁负责处理我正在创建的XmlTextReader?
从我到目前为止发现的,构造函数已经创建了我传入的xml的副本,所以我猜我可以在创建SqlXml对象后立即处理读取器。但这只是一个猜测,因为我不知道读者是否会被ado.net使用。
TIA 马丁
答案 0 :(得分:2)
你的假设是正确的。 SqlXml的构造函数将XmlReader的内容存储在内存流中。它不包含对传入的XmlReader的引用。
反编译的SqlXml构造函数:
public SqlXml(XmlReader value)
{
if (value == null)
{
this.SetNull();
return;
}
this.m_fNotNull = true;
this.firstCreateReader = true;
this.m_stream = this.CreateMemoryStreamFromXmlReader(value);
}
因此,你应该处理XmlTextReader或等到它得到GC。前者通常是首选,因为它更惯用。