ASP.NET :- 使用单一视图从两个表中删除记录

Posted

技术标签:

【中文标题】ASP.NET :- 使用单一视图从两个表中删除记录【英文标题】:ASP.NET :- Deleting records from two tables using single view 【发布时间】:2020-05-30 03:31:30 【问题描述】:

我想从 2 个表中删除数据。我正在使用实体框架。

这是课程。

[HttpPost]
        public ActionResult Delete(int employeeId)
        
            int id = employeeId;
            MvcWebApp.DbModel.profile profile = dbContext.profiles.Find(employeeId);
            dbContext.profiles.Remove(profile);
            dbContext.SaveChanges();
            regi regi = dbContext.regis.Find(id);
            dbContext.regis.Remove(regi);
            dbContext.SaveChanges();
            return RedirectToAction("Index");
        

其中employeeId是子表的列名,Id是父表的列名。

MvcWebApp.DbModel.profile这是类的完全限定名。

我得到profile object null。

【问题讨论】:

ASP.NET 是一个 Web 框架,它不会读取或删除数据。您是在询问实体框架吗?为什么要调用SaveChanges两次,而不是按需调用Remove,最后只调用`SaveChanges? @PanagiotisKanavos 因为我需要保存 2 个表的更改。 这不是SaveChanges 所做的 - 它保留了自上次调用以来的所有 更改。你只需要调用一次。此外,EF 处理的是实体,而不是表。如果与DeleteBehavior.Cascade 存在父子关系,则在调用SaveChanges 时删除父级将删除子级。 无论如何,这里的问题是什么?什么不起作用?如果 EmployeeID 没有匹配的个人资料,profiles.Find 将找不到任何东西。只需检查null 并继续下一步。 regis.Find 似乎也在使用 employeeID 作为 ID。对吗? @PanagiotisKanavos 哦。但是为什么我在配置文件对象中得到空值..? 【参考方案1】:

需要在父对象中包含子表。

 [HttpPost]
         public ActionResult Delete(int id)
         
            var parent = dbContext.regis.Include(p => p.profiles).SingleOrDefault(p => p.id == id);
            foreach(var child in parent.profiles.ToList())
            
                dbContext.profiles.Remove(child);
                dbContext.SaveChanges();
            
             return RedirectToAction("Index");
         

【讨论】:

【参考方案2】:

我的建议是首先,看看你有没有提供你提供的 ID 的员工这是最简单的,我想一定没有!正如你所说,它返回null。 你得到所有输入的这个 NULL 吗?

其次,尝试在调试器模式下运行您的代码,在第一行放置一个断点以查看发送给方法的 EmployeeId 是什么。检查它可能是零,所以你的 POST 方法有问题

【讨论】:

以上是关于ASP.NET :- 使用单一视图从两个表中删除记录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery 从 asp.net 视图模型中动态删除行而不删除集合中的其余下一个对象

将 jQuery JSON 对象保存到 SQL 表中,而无需在 MVC ASP.NET Core 中创建视图模型类

在 ASP.NET MVC 5 中从数据库加载 Razor 视图

如何在 asp.net core 的其他表中添加数据和删除相同的数据?

在 asp.net 中使用 Jquery 在表中添加行和删除行

C# ASP.NET MVC:动态更新视图