我找不到这个问题的书面答复。
如果我使用sqlxml对象将xml传递给storedproc,谁负责处理我创建的xmltextreader?
根据我目前的发现,构造函数已经创建了我传入的XML的副本,所以我猜我可以在创建SqlXML对象之后立即释放读卡器。但这只是一个猜测,因为我不知道ADO.NET以后是否会使用这个阅读器。
蒂亚
马丁

最佳答案

你的假设是正确的。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'ed。前者通常是首选的,因为它更习惯用法。

关于sql-server - 在ADO.NET中使用SQLXML,谁需要处理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8715266/

10-10 04:49