이상한 일이 발생합니다. UserGroups라는 테이블과 일대 다 관계가있는 Group이라는 테이블이 있습니다.윌. 엔티티 프레임 워크를 제거하면 기본적으로 캐스케이드 삭제가 수행됩니다.
이제 Entity Framework .Remove 메서드를 사용하십시오. 사용자가있는 그룹을 삭제할 수 있지만 데이터베이스에서 직접 비슷한 작업을 수행하려고하면 예외가 발생합니다 (그룹에 하위 레코드가 있습니다 !!!).
[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();
}
내가 찾기 방법에 이후이 그룹과 두 개의 탐색 속성을 검색하고 두렵다
액션 방법으로 보인다 , 이것은 .Delete가 thses 탐색을 먼저 제거하고 Group 객체를 제거한다는 것을 의미합니다 !!!!
I 두 방법을 정의
EDIT; 찾기 및 찾기 : -
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();
}
그래서 다른 제안 사항이 있으십니까?
감사합니다,하지만 난이 문제를 가지고 모든 개체를 수정하는 믿을 수있을 것입니다 생각하지 않습니다. –
신뢰할 수 있다는 것은 무엇을 의미합니까? 엔티티를 만들 때 forein 키와 가상 속성을 모두 사용하여 최대한의 제어를 제공해야합니다. –
위의 편집을 참조하십시오. 필자는 두 가지 Find 메서드를 정의 할 것이다. Group 개체 만 반환하고 삭제에 사용되며 다른 개체는 모든 탐색 속성이 포함 된 Group 개체를 검색하고 개체 세부 정보를 사용하거나 볼 수 있습니다. –