У меня проблемы с импортом XML-файла с использованием SqlBulkCopy
.Файл XML выглядит следующим образом:
<root>
<Automobiles>
<Car Id="1" Name="SomeModel1"/>
<Car Id="2" Name="SomeModel2"/>
<Car Id="3" Name="SomeModel2"/>
</Automobiles>
</root>
Моя таблица выглядит следующим образом:
Int Id
varchar Name
Вот мой код:
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("autolist.xml"));
SqlConnection connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["Connection"].ToString());
SqlBulkCopy sbc = new SqlBulkCopy(connection);
sbc.DestinationTableName = "Automobiles";
foreach (DataColumn dc in ds.Tables[0].Columns)
{
sbc.ColumnMappings.Add(dc.Caption, dc.Caption);
}
connection.Open();
sbc.WriteToServer(ds.Tables[0]);
connection.Close();
Я мог только импортироватьId
но не Name, потому что его атрибут и DataSet
содержат только один столбец.Есть ли способ сопоставить атрибуты столбцам?
Может быть, лучше использовать XmlDocument
вместо DataSet
?
Я думаю, что не так.Набор данных сильно отличается, когда у меня есть некоторый корневой элемент вокруг элемента Automobiles, а в таблицах набора данных отсутствуют столбцы.Хорошо работает без корневого элемента.