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