首页 > 解决方案 > 删除操作不适用于实体框架中没有依赖关系的实体

问题描述

这是我的删除操作代码,当我尝试删除不包含任何依赖项的实体时。它总是返回索引而不删除。我只想为具有依赖关系的实体设置它,其他实体应该允许删除并添加到日志中。

    // GET: Company/5/Delete
        [Route("{companyPk:int}/Delete")]
        public async Task<ActionResult> Delete(int? companyPk)
        {
            //Validate parameters
            if (companyPk == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Company identifier is missing.");
            }

            //Get the model from db
            Company company = await _work.Companies.GetAsync(companyPk);
            if (company == null)
            {
                return HttpNotFound();
            }

            //Convert model to dto
            CompanyDto companyDto = _mapper.Map<CompanyDto>(company);

            return View(companyDto);
        }

        // POST: Company/5/Delete
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        [Route("{companyPk:int}/Delete")]
        public async Task<ActionResult> DeleteConfirmed(int companyPk)
        {
            //Get the model from db
            Company company = await _work.Companies.GetAsync(companyPk);

            var Related = _work.Companies.Where(i => i.CompanyPk == companyPk)
                .Include(i => i.Departments)
                .Include(i => i.Locations);
                //.FirstOrDefault();

            if (Related != null)
            {
                ViewBag.Message = String.Format("Company Pk has dependencies for Department and Location. Can't Delete");
                return RedirectToAction("Index");
            }

            //Prepare log model
            var logCompany = _mapper.Map<LogCompany>(company);
                logCompany.RecordId = 0;
                Utilities.Instance.SetLogEntityProperties(logCompany, "D");

                //Save model to db
                _work.LogCompanies.Add(logCompany);
                _work.Companies.Remove(company);
                await _work.CompleteAsync();

                return RedirectToAction("Index");
        }

标签: c#model-view-controller

解决方案


您是否尝试在删除后添加这一行?

_work.SaveChanges();

据我所知,没有它,您只需在本地删除,savechanges 也会编辑到数据库中。


推荐阅读