Linq-to-Sql删除命令不工作

本文关键字:工作 命令 删除 Linq-to-Sql | 更新日期: 2023-09-27 18:08:17

下面是一个简单的Linq-to-SQL查询,用于删除与给定用户ID关联的地址记录。对我来说,它看起来是正确的,并且与我在网络上遵循的其他示例相匹配。然而,当我执行它时,记录没有被删除。并且没有返回错误消息。我做错了什么?

protected void Button1_Click(object sender, EventArgs e)
    {
        int UserID = 250;
        SBMData2.SBMDataContext db = new SBMData2.SBMDataContext();
        var addresses = from a in db.Addresses
                        where a.UserID == UserID
                        select a;
        foreach (var address in addresses)
        {
            try
            {
                db.Addresses.DeleteOnSubmit(address);
            }
            catch (Exception ex)
            {
                Label1.Text = ex.StackTrace.ToString();
            }
        }
    }

Linq-to-Sql删除命令不工作

您还没有在示例中提交任何更改。您只是将要在提交时保存的更改排在队列中。

要实际将更改写入数据库,您必须调用db.SubmitChanges();

您缺少一个

db.SubmitChanges();

由于您没有提交更改,因此删除将永远不会执行。

我做过这样的事情(未经测试)

protected void Button1_Click(object sender, EventArgs e)
{
    int userID = 250;
    SBMData2.SBMDataContext db = new SBMData2.SBMDataContext();
    var addresses = db.Addresses.Where(x => x.UserID == userId);
    foreach (var address in addresses)
    {
        try
        {
            db.Addresses.DeleteOnSubmit(address);
            db.SubmitChanges();
        }
        catch (Exception ex)
        {
            Label1.Text += ex.StackTrace.ToString();
        }
    }
}