Здравствуйте!
Пишу первое приложение на C#. Появилась загвоздка при удалении записи из БД.
Структура БД — таблица Machines (машины) и таблица Services (обслуживания).
Machines:
ID — уникальный ключ
Name — название
Services
ID — уникальный ключ
Date — дата
Description — описание
IDMachine — код машины
Таблицы связаны — Machines.ID -> Services.IDMachine (один ко многим). Хочу, чтобы при удалении записи из Machines автоматом удалялись и дочерние записи в Services. Уже перепробовал разные варианты, однако добиться каскадного удаления не получается.
Ниже код реализации:
....
// подготовка данных
eLibraDataSet.Relations.Add("Machines_Services", eLibraDataSet.Machines.IDColumn,
eLibraDataSet.Services.IDMachineColumn,false);
fkc = new ForeignKeyConstraint("Machines_ServicesFK",
eLibraDataSet.Machines.IDColumn, eLibraDataSet.Services.IDMachineColumn);
fkc.DeleteRule = Rule.Cascade;
fkc.UpdateRule = Rule.SetNull;
eLibraDataSet.Machines.Constraints.Add(fkc);
eLibraDataSet.EnforceConstraints = false; //это ограничение включаю непосредственно перед удалением, поэтому пока отключаю его
machinesTableAdapter.Fill(eLibraDataSet.Machines);
servicesTableAdapter.Fill(eLibraDataSet.Services);
....
// непоcредственно удаление
eLibraDataSet.EnforceConstraints = true;
machinesTableAdapter.Delete(0); //удаляю первую запись в главной таблице, для нее есть записи в подчиненной
eLibraDataSet.EnforceConstraints = false;
machinesTableAdapter.Update(eLibraDataSet.Machines); // но после обновления в подчиненной записи остаются на месте
servicesTableAdapter.Update(eLibraDataSet.Services);
machinesTableAdapter.Fill(eLibraDataSet.Machines);
servicesTableAdapter.Fill(eLibraDataSet.Services);
...
Не выходит у меня таким образом каскадно удалять записи. Из главной таблицы удаляется запись, а подчиненные записи остаются.
Может кто-нибудь подскажет, каким образом надо организовать это удаление?