자주 액세스하는 일부 테이블의 조회 시간을 향상시키기 위해 DataTable의 행 ID 필드를 행 자체에 매핑하는 HashMap을 만듭니다. 이제는 때때로 RowNotInTableException이 발생합니다.DataTable-RowNotInTableException과 독립적으로 DataRow를 저장합니다.
이 행은 테이블에서 삭제되었으며 데이터가 없습니다. BeginEdit()를 사용하면이 행에 새 데이터를 만들 수 있습니다.
그물을 조금 둘러 본 후에는 DataRows가 DataTable에 연결되어 있지 않은 것 같습니다. DataTable은 메모리에 남아 있지만 (DataRow가 참조를 유지하는지 확실하지 않지만 어쨌든 여전히 캐시하고 있습니다) 모든 행을 HashMap에 격리하여 유지하면서 무언가를 깨뜨릴 수 있습니까? 이 오류가 발생하는 다른 이유는 무엇입니까? 이 게시물 RowNotInTableException when accessing second time 도 비슷한 문제에 대해 설명하지만 해결 방법도 없습니다. 그 어떤 변화도 가져 오지면
UPDATE 것은
사실 DataRowViews를 저장하고있다.
좋아요,하지만 첨부한다는 것은 무엇을 의미합니까? 나는 원래의 dataTable을 파괴하지 않는다. 단지 추가적인 구조로 DataRowViews에 대한 참조를 저장한다. (업데이트를 참고하십시오. DataRow가 아닌 DataRowView를 저장한다는 사실을 깨달았습니다. 차이가 있습니까?) 또한 자주 사용하는 데이터 테이블의 일반적인 캐시 구조이고 자체 데이터 구조를 만들기 때문에 자체 구조가 좋지 않습니다. 각 테이블 구조에 대한 구조가 올바른 방법 일 수 없습니까? – Nicolas78
캐시 된 행이 삭제되지 않았습니까? (DataRow.Delete())? – TcKs
nah 나는 행을 삭제하지 않습니다. 방금 읽은 테이블을 캐시에 저장하고 결코 다시 쓰지 않습니다 (쓰기 방식). 그래서 나는 그 오류에 대해 당혹 스럽다. – Nicolas78