我有一个.xml
文档,我正在解析并插入到事务中的数据库中。如果发现验证错误,我想回滚任何更改。由于文档可能很大,我使用XmlReaderSettings
和ValidationEventHandler
。
以下是摘录。我实例化XmlReaderSettings
并附上ValidationEventHandler
。
settings.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(ValidationEventHandler);
private void ValidationEventHandler(object sender, ValidationEventArgs e)
{
if (e.Severity == XmlSeverityType.Error)
{
throw new XmlSchemaValidationException();
}
}
然后我尝试捕获,并回滚任何异常。
using (OracleConnection conn = new OracleConnection(connectionString))
{
conn.Open();
using (OracleCommand command = conn.CreateCommand())
{
using (OracleTransaction trans = oracleConnection.BeginTransaction(IsolationLevel.ReadCommitted))
{
try
{
conn.Transaction = trans;
using (XmlReader xmlReader = XmlReader.Create(stream, settings))
{
// parsing
}
}
catch (Exception ex)
{
trans.Rollback();
}
}
}
}
我期待着:
我错了吗?如果我是这样,我该如何修复代码呢?