通过AJAX调用从数据表中删除数据

时间:2017-06-08 12:43:08

标签: c# jquery asp.net ajax asp.net-mvc

我有一个视图,我有AJAX调用

这是AJAX请求的代码,它只是后端的命中方法:

<script>
// deleting
$("#send").click(
    function sender() {
        $.ajax({
            contentType: 'application/json; charset=utf-8',
            type: 'Post',
            dataType: 'json',
            processData: false,
            url: '@Url.Action("DeleteAll", "Questions")',
            success: function(da) {
                if (da.Result === "Success") {

                    alert("Data deleted!");

                } else {

                    alert('Error' + da.Message);
                }
            },
            error: function(da) {
                alert('Error');
            }
        });
    });

后端的方法

public ActionResult DeleteAll()
{
    ApplicationDbContext context =  new ApplicationDbContext();
    List<InvitationMail> query = context.InvitationMails.ToList();
    foreach (InvitationMail q in query)
    {
        context.DeleteObject(q);
    }
    context.SaveChanges();
    return Json(new {Result = "Success", Message = "Saved Successfully"});
}

但我有这个错误

enter image description here

我需要删除InvitationMail表中的所有数据,我该怎么做?

3 个答案:

答案 0 :(得分:2)

使用Removerange功能比foreach

快得多
List<InvitationMail> query = context.InvitationMails.ToList();
context.InvitationMails.Removerange(query); 
context.SaveChanges();

答案 1 :(得分:1)

DbContext不包含DeleteObject()方法,但您可以使用Remove()方法。像这样:

foreach (InvitationMail q in query)
{
    context.InvitationMails.Remove(q); 
}

context.SaveChanges();

答案 2 :(得分:1)

为什么不使用这样的TRUNCATE TABLE SQL命令:

context.Database.ExecuteSqlCommand("TRUNCATE TABLE InvitationMail");