c# - asp.NET LINQ 从数据库中删除

标签 c# asp.net sql-server linq

我有一个包含 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/

相关文章:

sql - 优化 select 查询以返回前 100 条记录(添加 ORDER BY 会减慢查询速度)

sql-server - 基于 select 语句声明表变量

c# - lambda 表达式中带通配符的空合并运算符

c# - 如何在 Entity Framework 中获取多个插入的标识值

javascript - 从 Jquery load() 编辑的内容回发

c# - 限制 Elmah 发送的电子邮件数量

sql - 如何在sql中拆分字符串?

c# - 为什么 C# 对内部 KeyValuePairs 使用结构而不是类

c# - 如何在继承的 WinForm 中将控件添加到容器

c# - 在 MVVM 项目中,您如何命名 "other"类型的 View 模型?