2008-11-06 5 views
0

사용자가 DataContext.SubmitChanges()를 호출하고 DataContext가 아무 것도 추적하지 않는 경우 예외가 발생합니다.Linq 2 SQL의 DataContext가 엔티티를 추적하고 있는지 확인할 수 있습니까?

삽입, 업데이트 또는 삭제가 없으면 SubmitChanges를 호출해도 문제가 없습니다. 그러나 개발자가 엔티티를 DataContext에 첨부하는 것을 잊지 않았는지 확인하고자합니다.

DataContext가 추적하는 모든 항목 (변경되지 않은 항목 포함)의 모음을 가져올 수 있습니까?

추신 : last question I asked가 함께 대답했다 : "대신이 방법을 수행"...하지 :-)

답변

1

나는 이것을 직접 얻을 수있는 공개/보호 된 방법이 없다고 생각합니다. here 메시지를 약 3 개 보내고 ServicesChangeTracker 속성을 보면 반성을 사용해야 할 것입니다. 아주 못 생겼어, 나는 두려워.

0

ObjectTracker 보거나의 DataContext를 중단 무언가를하십시오. 거기에 변경 목록이 저장되어 있습니다.

또한 SubmitChanges가 가상이기 때문에 SubmitChanges 호출을 가로 채서 일부 확인을 수행 할 수 있습니다.

0

I를 내가 제대로 질문을 이해한다면 ...

이들은 DataContext를가

DataContext.GetChangeSet().Inserts; 
DataContext.GetChangeSet().Deletes; 
DataContext.GetChangeSet().Updates; 

이 무엇을 당신의 생각을 추적하고 무엇을 보여?

if (DataContext.GetChageSet().Inserts.Count = 0 
     && DataContext.GetChageSet().Deletes.Count 
     && DataContext.GetChageSet().Updates.Count) 
{ 
    throw new Exception("You forgot to do something with your DataContext..."); 
} 
else 
{ 
    DataContext.SubmitChanges(); 
} 
+0

nop OP는 변경 여부와 관계없이 추적 된 개체의 개수를 원합니다. – eglasius

+0

그냥 DataContext.YourEntities.Count()되지 않을까요? 나는 당신이 추적하는 것이 무엇을 의미하는지 이해하지 못합니다 ... DataContext는 데이터베이스의 모든 객체를 추적합니다. – bytebender

관련 문제