0

나는 내 컨트롤러에서 다음과 같은 방법을 테스트 다음 테스트 케이스를버그 일 수 있습니까?

[TestMethod()] 
    [DeploymentItem("Courses.sdf")] 
    public void RemoveCourseConfirmedTest() 
    { 

     CoursesController_Accessor target = new CoursesController_Accessor(); 
     int id = 50; 

     ActionResult actual; 
     CoursesDBContext db = target.db; 
     Course courseToDelete = db.Courses.Find(id); 

     List<CourseMeet> meets = courseToDelete.meets.ToList<CourseMeet>(); 

     actual = target.RemoveCourseConfirmed(courseToDelete); 
     foreach (var meet in meets) 
     { 
      Assert.IsNull(db.Meets.find(meet)); 
     } 
     Assert.IsNull(db.Courses.Find(courseToDelete.courseID)); 

    } 

있습니다.

[HttpPost, ActionName("RemoveCourse")] 
    public ActionResult RemoveCourseConfirmed(Course course) 
    { 
     try 
     { 
      db.Entry(course).State = EntityState.Deleted; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     catch (DbUpdateConcurrencyException) 
     { 
      return RedirectToAction("RemoveMeet", new System.Web.Routing.RouteValueDictionary { { "concurrencyError", true } }); 
     } 
     catch (DataException) 
     { 
      ModelState.AddModelError(string.Empty, "Unable to save changes. Try again."); 
      return View(course); 
     } 

    } 

저는 모의 DB를 사용해야한다는 것을 알고 있습니다 ....하지만이 프로젝트에서는이 접근 방식을 채택하기로 결정했습니다.

이 경우 어떻게됩니까? 실제 웹 사이트를 실행할 때이 함수는 완벽하게 작동하고 코스와 모든 속셈을 제거합니다. 내가 테스트를 실행할 때

는하지만 난 내가 테스트

List<CourseMeet> meets = courseToDelete.meets.ToList<CourseMeet>(); 

에서 다음 줄을 주석 루프를 교체 할 경우 다음

System.InvalidOperationException: The operation failed: The relationship could not be 
changed because one or more of the foreign-key properties is non-nullable. When a change is 
made to a relationship, the related foreign-key property is set to a null value. If the 
foreign-key does not support null values, a new relationship must be defined, the foreign- 
key property must be assigned another non-null value, or the unrelated object must be 
deleted. 

이 더욱 흥미로운 부분이다 다음과 같은 예외를 얻을 다음과 같습니다.

예외 및 테스트 사례를 통과시키지 마십시오.

Entity Framework에 대한 정보가 누락되었거나 버그입니까?

+0

코스에 대한 하위 테이블은 무엇입니까? 내가 아는 한, EF는 기본적으로 하위 엔티티를 삭제하지 않고 부모에 대한 외래 키를 null로 설정합니다. 오류 메시지에서 그 것처럼 보입니다. – magnus

+0

그게 내가 인터넷에서 발견 한거야. 그러나 액트 응용 프로그램을 실행하면 코스가 삭제되고 DB에서 어린이 (couse meets)가 삭제됩니다. 또한 선을 제거하면 테스트가 통과됩니다. – keshav

답변

0

글쎄 지금은 잠시 동안 열려 있습니다. 나는 아직도 명확한 답을 찾을 수 없어 더 MVC와 EF와 내가 무슨 일이 일어나고 있는지 생각 일하는 것은 내가 선을

List<CourseMeet> meets = courseToDelete.meets.ToList<CourseMeet>(); 

실행되면이 따라서 때 개체 관리자에로드받을 충족한다는 것입니다 부모 개체가 삭제되면 더 이상 부모 코스에 대한 참조가 없습니다.

관련 문제