У меня есть базы данных SQL Server с 2 таблицы:asp.NET LINQ Удалить из базы данных
t1 - Категория
Id
Name
T2- Продукт
Id
Name
CategoryId
Я хочу удалить строку из таблицы Category
, но поскольку у меня есть внешний ключ, мне нужно обрабатывать продукты, имеющие CategoryId
, которые я хочу удалить.
Так что я сделал это:
var ProdCatID = (from prod in DataContext.Products
where prod.CategoryId == Convert.ToInt32(Id)
select prod).First();
ProdCatID.CategoryId = null;
DataContext.SubmitChanges();
var DelCat = (from cat in DataContext.Categories
where cat.Id == Convert.ToInt32(Id)
select cat).ToList();
DataContext.Categories.DeleteAllOnSubmit(DelCat);
DataContext.SubmitChanges();
То, что я m trying to do is to check if there is any product with that
CategoryId , if there is - I want to set the
CategoryID to null and then delete the row from the
category` стол.
Он работает, когда у меня есть продукт с CategoryId
, но когда я не могу его удалить.
Любые идеи?
где cat.Id == Convert.ToInt32 (Id) никогда не будет обрабатывать случай, когда продукт имеет идентификатор нулевой категории. – JimmyV
Он работает, когда CategoryId используется продуктом. Но когда CategroId не используется никаким продуктом, я не могу его удалить. Зачем? – Peter
У вас есть дочерние записи, возможно, вы должны убедиться, что если есть от 1 до многих отношений и т. Д., Которые вы удаляете снизу вверх, то это означает, что родительская запись будет последней, которая будет удалена .. это предотвратит наличие сиротских записей в вашей базе данных .. также почему бы вам не обернуть код вокруг try catch, где вы пытаетесь удалить, и сообщить нам, что такое сообщение об ошибке .., что поможет вам понять, почему вещи не удаляются .. – MethodMan