У меня есть следующие две таблицы
Таблица 1:
PK (int)
TotalCount (int)
Таблица 2:
PK (int)
FK (int) (связь с PK в таблице 1)
Count
Я вставляю запись в первую таблицу, чтобы получить PK. Затем, когда я собираю данные из источника и помещаю их в таблицу 2, я заполняю FK PK из предыдущей таблицы.
Я хотел бы внедрить транзакции в мой код. Как я смогу откатить таблицу 1, если вставка в таблицу 2 завершится неудачно, так как по таблице 1 уже выдан коммит?
Я написал небольшой код, чтобы проиллюстрировать, что я делаю
using (DeviceDataContext context = new DeviceDataContext())
{
tgdd = new Data();
context.Datas.InsertOnSubmit(tgdd);
context.SubmitChanges();
int pk = tgdd.PK;
int count = 0;
foreach (…)
{
count += 1;
tgd = new Data2();
tgd.FK = pk;
tgd.count = count;
context.Datas2.InsertOnSubmit(tgd); //if this crashes, I want to roll
//back what happened to table 1(Datas)
}
}
Я написал этот код быстро, поэтому, если есть логические ошибки, пожалуйста, игнорируйте.
Значит, транзакции помогут мне сделать то, что я хочу?