奇怪的事情发生了。我有一个名为 Group 的表,它与名为 UserGroups 的表具有一对多的关系。
现在使用实体框架 .Remove 方法。我可以删除一个有用户的组,尽管当我尝试直接在数据库上执行类似的操作时,它会引发异常(该组有子记录!!!)知道发生了什么!!!。
Action 方法如下所示:-
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
try
{
var v = groupRepository.Find(id).Name;
groupRepository.Delete(id);
groupRepository.Save();
return Json(new { IsSuccess = "True", id = id, description = v }, JsonRequestBehavior.AllowGet);
// return RedirectToAction("Index");
}
catch (NullReferenceException)
{
//ModelState.AddModelError(string.Empty, " The record might have been already deleted.Please refresh the page.");
return Json(new { IsSuccess = "False" }, JsonRequestBehavior.AllowGet);
}
return RedirectToAction("Delete", new { id = id});
}
存储库方法是:-
public void Delete(int id)
{
var group = context.Groups.Find(id);
context.Groups.Remove(group);
}
public Group Find(int id)
{
return context.Groups.Where(c => c.GroupID == id).Include(a => a.UserGroups)
.Include(a2 => a2.SecurityRoles).SingleOrDefault();
}
恐怕因为在 Find 方法上我正在检索 Group 及其两个导航属性,所以这意味着 .Delete 将首先删除这些导航,然后它将删除 Group 对象!!!!
编辑
我定义了两种方法;查找和查找全部:-
public Group Find(int id)
{
return context.Groups.Find(id) ;
}
public Group FindAll(int id)
{
return context.Groups.Where(c => c.GroupID == id).Include(a => a.UserGroups)
.Include(a2 => a2.SecurityRoles).SingleOrDefault();
}
那么还有其他建议吗??