在ADO.NET中使用SQLXML,谁需要进行处理?

3
我找不到这个问题的文档答案。 如果我使用SqlXml对象传递xml到StoredProc,谁负责处理我创建的XmlTextReader?
从我目前找到的资料来看,构造函数已经创建了我传递的xml的副本,所以我猜想可以在创建SqlXml对象后立即处理读取器。但这只是一个猜测,因为我不知道读取器是否稍后被ado.net使用。
谢谢 Martin
1个回答

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或等待其被垃圾回收。通常情况下,前者更为惯用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接