无法提交对数据库或页面控件的更改

时间:2011-05-09 11:12:44

标签: asp.net linq

我有一个非常简单的页面,包括从数据库填充的两个DropDownLists和一个按钮。页面的目的非常简单,允许用户从数据库中删除条目。单击该按钮时,将执行一个简单的LINQ查询以删除预期的目标,并从下拉列表中删除该条目,但除非在该函数中重定向响应,否则它不起作用,即使调用了SubmitChanges() 。为什么会这样?

编辑:代码

protected void Page_Init(object sender, EventArgs e)
{
    var result = Database.DB.Data.GetTable<Database.tbl_module_>().Where(module => module.deptCode == ((User)Session["user"]).deptCode);
    foreach (var row in result)
    {
        this.listModuleCode.Items.Add(new System.Web.UI.WebControls.ListItem(row.code));
        this.listModuleTitle.Items.Add(new System.Web.UI.WebControls.ListItem(row.title));
    }
}
protected void Delete_Click(object sender, EventArgs e)
{
    var DB = Database.DB.Data;
    var table = DB.GetTable<Database.tbl_module_>();
    var result = table.Where(module => module.deptCode == ((User)Session["user"]).deptCode && module.code == listModuleCode.SelectedItem.Text);
    listModuleCode.Items.Remove(listModuleCode.SelectedItem);
    listModuleTitle.Items.Remove(listModuleTitle.SelectedItem);
    table.DeleteAllOnSubmit(result);
    DB.SubmitChanges();
    Response.Redirect("deletemodule.aspx"); // redirect to this page
}

1 个答案:

答案 0 :(得分:2)

我们需要更多地看到您的代码。但是:

您需要确保在提交时知道删除:

var q = db.Customers.Where(c => c.CustomerID == 2).Single();
db.Customers.DeleteOnSubmit(q);
db.SubmitChanges();

不要忘记你可以直接将SQL传递给对象:

db.ExecuteCommand("DELETE FROM Customers WHERE ID = 2");

您可能认为这更容易。