我对C#MVC EntityState没有太多的了解,我通常使用IT基础架构,但我开始创建一个新程序,我需要帮助才能解决这个问题。
我有这个数据库: 专业公司 身份证号码 名称描述 ...
专业人士可以在一家或多家公司工作,公司可以拥有一名或多名专业人员。
我的ProfessionalController.cs代码:
public ActionResult Edit([Bind(Include = "ID,Name,...")] Profissional profissional, List<int> companiesList)
{
if (ModelState.IsValid){
if (companiesList != null){
List<Companies> lista = new List<Companies>();
foreach (int ID in companiesList)
{
lista.Add(db.Companies.Find(ID));
}
var profissionalN = db.Profissional.Find(profissional.ID);
var needDelete = profissionalc.Companies.Except(lista).ToList();
var needCreate = lista.Except(profissionalc.Companies).ToList();
profissional.Companies.Clear();
db.Entry(profissionalN).State = EntityState.Detached;
db.Entry(profissional).State = EntityState.Modified;
foreach (Companies convenio in needCreate){
profissional.Companies.Add(convenio);
}
foreach (Companies convenio in needDelete){
profissional.Companies.Remove(convenio);
}
}
db.Entry(profissional).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(profissional);
}
我可以将专业人士添加到公司,但我无法删除。
任何人都可以帮助我吗?
我还尝试使用以下代码删除,执行白名:
public void RemoveCompanies(int profissionalID, int companyID)
{
var profissional2 = db.Profissional.FirstOrDefault(x => x.ID == profissionalID);
var company2 = db.Company.FirstOrDefault(x => x.ID == companyID);
profissional2.Company.Remove(companyID);
db.Entry(profissional2).State = EntityState.Modified;
db.SaveChanges();
}
答案 0 :(得分:0)
您从上下文中分离了'profissional'变量。在分离操作期间,不会强制执行标识关系中的级联删除指令和引用约束。即您删除的公司将不会被强制执行,因为当时'profissional'变量已被分离。
尝试删除db.Entry(profissionalN).State = EntityState.Detached;
行。