我有一个包含 2 个表的 SQL Server 数据库:
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();
我试图做的是检查是否有任何产品具有该
CategoryId,如果有 - 我想将
CategoryID 设置为 null然后从
Category` 表中删除该行。
当我有一个带有 CategoryId
的产品但我无法删除它时,它可以正常工作。
有什么想法吗?
最佳答案
您只是将具有此 CategoryID 的第一个产品设置为 null - 您需要处理具有该 ID 的所有产品!
var products = (from prod in DataContext.Products
where prod.CategoryId == Convert.ToInt32(Id)
select prod).ToList();
foreach(Product p in products)
{
p.CategoryId = null;
}
DataContext.SubmitChanges();
.....
之后,现在您应该可以从表中删除类别
关于c# - asp.NET LINQ 从数据库中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33698534/