2015-02-06 4 views
0

저는 Visual Studio 2013을 사용하고 있으며 엔티티 프레임 워크를 사용하여 프로젝트를 개발하고 있습니다.엔티티의 인스턴스를 삭제할 수 없습니다.

엔티티 인스턴스를 삭제하려고합니다. 내가 그것을 삭제하지 못할

INOTESTEntities db = new INOTESTEntities(); 

var finaExam = db.classAssesmentDateInfo.Where(x => x.Id == 22).First(); 

내가 db.DeleteObject(finaExam);

하지만 DeleteObject 나던을 시도하고 삭제하려는

그렇게 존재 :

이 나의 실체이다. 나 좀 도와 줄 수있어?

+0

사용'db.classAssessmentDateInfo.DeleteObject (finaExam가)''dB 다음 .SaveChanges()' –

+0

왜 deleteObject 메소드가 존재하지 않습니까? 나는 여러 번 전에 사용했지만 지금은 내가 기울어 져 있는데 어디서 빠졌는가? –

답변

0

DbContext를 사용하는 경우 DeleteObject 메서드를 사용하려면 ObjectContext로 캐스팅해야합니다.

((IObjectContextAdapter)db).ObjectContext.DeleteObject(finaExam); 

당신이 캐스팅하지 않고 직접 DbContext를 사용하려면

는 제거 구문을 사용합니다

db.classAssessmentDateInfo.Remove(finaExam); 
db.SaveChanges(); 

제거가 삭제 된 엔티티를 표시합니다. SaveChanges가 호출되면 표시된 엔터티가 삭제 쿼리를 생성합니다.

마지막으로, VS 2013을 사용하는 경우 프로젝트에 EF 5 또는 6이 포함되어있을 가능성이 높습니다.이 투표는 현재 "사용되지 않는"ObjectContext 대신 DbContext로 기본 설정됩니다. 이것이 과거에 사용한 구문이 더 이상 새 프로젝트에서 작동하지 않는 이유입니다.

+0

VS2013을 사용하려면 deleteObject를 사용하십시오. remove를 사용해야합니다. 사실입니다. –

+0

아니요, 위와 같이 컨텍스트를 IObjectContextAdapter로 캐스팅 할 수 있습니다. 그러나 Remove를 사용하는 것보다 실제로 이점이 없으며 프로젝트에 다른 참여자를 혼동시킬 수 있습니다. 또한 선택된 컨텍스트는 사용 된 Entity Framework와 관련되어 있음을 명심하십시오. 프로젝트를 이전 ObjectContext 템플릿으로 되돌릴 수는 있지만, 그 중 하나는 장점이 없습니다. –

0
당신 대신 당신이 DbSet에 Remove()를 호출 할 필요가있는 경우에 이전 System.Data.Objects.ObjectContextSystem.Data.Entity.DbContext 사용하고있을 수 있습니다

:

db.classAssesmentDateInfo.Remove(finaExam); 
관련 문제