Я анализирую XML-файл, используя LinqToXSD. Я использую Linq to SQL для вставки элементов в XML в соответствующие таблицы в базе данных.
Я вставляю множество различных таблиц / элементов в DataContext, используя
DB.<tables>.InsertOnSubmit(table);
где таблицы могут быть любыми из примерно 75 различных таблиц.
XML полон дубликатов, и я хотел бы проверить, добавлен ли уже заданный элемент в XML в набор изменений DataContext.
Есть ли общий способ сделать это? То, как я делаю это сейчас, включает в себя написание кода для каждой из разных таблиц, что заставляет меня думать, что я могу каким-то образом извлечь метод и написать этот код только один раз.
Для анализа XML у меня есть метод для каждого элемента в xml, который соответствует таблице в базе данных. Следующие два метода обрабатывают xml-элементы разных типов.
private static tbl_trackname ParseTrackName(TRACKNAMEType tRACKNAMEType)
{
tbl_trackname tableTrackName = new tbl_trackname();
tableTrackName.code = tRACKNAMEType.code;
tableTrackName.text = tRACKNAMEType.text;
DB.tbl_tracknames.InsertOnSubmit(tableTrackName);
return tableTrackName;
}
private static tbl_track ParseTrack(TRACKType tRACKType)
{
tbl_track tableTrack = new tbl_track();
tableTrack.trackID = int.Parse(tRACKType.trackid);
tableTrack.tbl_organisation = ParseOrganisation(tRACKType.organisation);
tableTrack.tbl_trackname = ParseTrackName(tRACKType.trackname);
tableTrack.tbl_nation = ParseNation(tRACKType.country);
DB.tbl_tracks.InsertOnSubmit(tableTrack);
return tableTrack;
}
первый метод вставляет строки в таблицу с именем tbl_trackname, второй вставляет строки в таблицу с именем tbl_track.
Отсутствующий здесь код - это код, который проверяет Datacontext, если дорожка или имя дорожки уже вставлено в Datacontext. Я также должен проверить, находится ли он уже в базе данных, но это всего лишь строка кода, так что я могу жить с этим для каждого метода ParseXXX ().