微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在单个ActionResult中删除多个数据库行? ASP.NET

如何解决在单个ActionResult中删除多个数据库行? ASP.NET

我希望能够使用一个ActionResult删除多个数据库行。但是,由于ActionResult的性质,无论如何都将首先执行到达的代码,并且将引发错误。有什么办法解决这个问题吗? -我要使用一个ActionResult的原因是因为我将id值作为其参数之一传递。此id值使用onclick事件从视图发送到ActionResult(因此,我无法使用单个onclick指定多个ActionResult)。

下面是按钮(单击该按钮后,会将ID值发送给ActionResult“ DeleteUser”):

@foreach (var User in Model)
      {
          <tr>
            <td>@User.UserID</td>
            <td>@User.Username</td>
            <td>@User.Email</td>
            <td>@User.Password</td>
            <td>@User.UserType</td>
            <td><i class="fas fa-pen-square fa-lg"></i></td>
            <td><i class="fas fa-minus-square fa-lg" onclick="location.href = '@Url.Action("DeleteUser","Admin",new { id = User.UserID })'"></i></td>
          </tr>
      }

可以在下面看到ActionResult“ DeleteUser”(向其发送ID值):

public ActionResult DeleteUser(int id)
        {
            //DONATOR DELETE --------

            int currentUserDonator = db.tblDonator.Where(aa => aa.user_id == id).Select(a => a.donator_id).FirstOrDefault();

            //Remove specific donator users payment details from donator payment details table in database
            var userDonatorPayment = db.tblDonator_Payment_Details.Where(bb => bb.donator_id == currentUserDonator).First();
            db.tblDonator_Payment_Details.Remove(userDonatorPayment);

            //Remove specific user from the user table in database (DRY - May be re-used)
            var User = db.tblUser.Where(ii => ii.user_id == id).First();
            db.tblUser.Remove(User);

            //Remove specific donator user from the donator table in database
            var UserDonator = db.tblDonator.Where(aa => aa.user_id == id).First();
            db.tblDonator.Remove(UserDonator);

            db.SaveChanges();

            //NPO DELETE --------

            int currentUserNPO = db.tblNpo.Where(dd => dd.user_id == id).Select(d => d.npo_id).FirstOrDefault();

            //Remove specific npo users banking details from npo bank table in database
            var userNPOBanking = db.tblNpo_Bank.Where(qq => qq.npo_id == currentUserNPO).First();
            db.tblNpo_Bank.Remove(userNPOBanking);

            //Remove specific npo user from the npo table in database
            var UserNPO = db.tblNpo.Where(mm => mm.user_id == id).First();
            db.tblNpo.Remove(UserNPO);

            db.SaveChanges();

            return RedirectToAction("User_table");
        }

从上面可以看到,ActionResult有两个“部分”-一个用于删除Donator用户,另一个用于删除NPO用户。但是,在我要删除NPO用户的情况下,捐赠者“部分”中的代码将执行,并且到达第二行时将引发错误

var userDonatorPayment = db.tblDonator_Payment_Details.Where(bb => bb.donator_id == currentUserDonator).First();

错误状态为“ system.invalidOperationException:'序列不包含任何元素'”。只是;我问是否有解决此问题的方法?谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。