删除方法问题 - Asp.net Web API

Posted

技术标签:

【中文标题】删除方法问题 - Asp.net Web API【英文标题】:Delete method issue - Asp.net Web API 【发布时间】:2021-07-26 19:08:25 【问题描述】:

我有一个工作正常的 POST 方法 它需要一个对象列表并使用 Entity Framework AddRange 将其添加到数据库中

我尝试使用 DELETE 方法应用相同的逻辑(获取对象列表并使用 RemoveRange 从数据库中删除它)它确实返回 200 OK 但不会从数据库中删除

发布

[HttpPost]
        public HttpResponseMessage Post(List<Provider_status> rows)
        
            try
            
                using (DbModel dbModel = new DbModel())
                
                    dbModel.Provider_status.AddRange(rows);
                    dbModel.SaveChanges();
                
            
            catch  
            return new HttpResponseMessage()
            
                Content = new StringContent("Records Added")
            ;
        

删除方法

[HttpDelete]
        public HttpResponseMessage Delete(List<Provider_status> rows)
        
            try
            
                using (DbModel dbModel = new DbModel())
                
                    dbModel.Provider_status.RemoveRange(rows);
                    dbModel.SaveChanges();
                
            
            catch  
            return new HttpResponseMessage()
            
                Content = new StringContent("Records Deleted")
            ;
        

【问题讨论】:

“不工作”不是一个足够详细的问题陈述,无法回答。 更新为:确实返回 200 OK 但不会从数据库中删除 您是否缺少操作中的[HttpDelete] 属性? 我添加了 HttpDelete 但结果相同 您正在捕获并忽略任何错误(异常),您会错过系统告诉您的重要信息吗? 【参考方案1】:

试试这个

foreach ( var row in rows)

var exRow= dbModel.Provider_status.FirstOrDefault(i=> i.Id==row.Id);
if( exRow!=null) dbModel.Provider_status.Remove(exRow);

dbModel.SaveChanges();

恕我直言,从操作中删除 [HttpDelete]

【讨论】:

我得到 2 个错误 1) 无法将类型 'long' 隐式转换为 'bool' 2) 无法将 lambda 表达式转换为预期的委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型 这是一个错字。你必须使用 == 而不是 =【参考方案2】:

一个可能的原因是

dbModel.Provider_status.RemoveRange(rows);

正在使用 reference equality 比较 rowsProvider_status 并考虑到由于没有匹配项,因此不应删除任何内容。

【讨论】:

知道如何解决这个问题以便能够从数据库中删除

以上是关于删除方法问题 - Asp.net Web API的主要内容,如果未能解决你的问题,请参考以下文章

从 ASP.NET Webservice 中删除了 WebMethod,方法仍然显示

c# asp.net GridView中如何删除一条记录后刷新页面

从 ASP.Net Web 服务 json 输出中删除“d”对象

从 ASP Net Web API POST 请求中删除空的 xml 标记

asp.net中GridView怎样进行分页,编辑,删除操作

使用本地帐户使用安全的 ASP Net 5 web api