Linq-to-Sql删除命令不起作用

时间:2011-09-12 18:54:22

标签: c# linq-to-sql

下面是一个简单的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();
            }
        }
    }

3 个答案:

答案 0 :(得分:4)

您尚未在示例中提交任何更改。您只需将提交的更改排队等待。

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

答案 1 :(得分:3)

你错过了

db.SubmitChanges();

由于您未提交更改,因此永远不会执行删除操作。

答案 2 :(得分:0)

我做过类似的事情(虽然未经测试)

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();
        }
    }
}