DB 테이블에 데이터를 추가하고
데이터를 변경할 때 예외 처리가 발생하였습니다.
추가된 데이터의 양은 동일한데 아래와 같은 예외 처리가 발생할 때도 있고 그렇지 않을 때가 있네요;;
예외 메세지는 아래와 같습니다.
Message : "이미 사용 중인 키가 있는 엔터티는 추가할 수 없습니다."
HResult : -2146233079
Msdn메거진에 해당 예외에 대한 내용이 있어 확인을 해 보니
"LINQ to SQL이 성능 향상을 위해 많은 양의 정보를 캐시하기 때문에 발생한 것입니다.저장 프로시저를 호출하면 LINQ to SQL은 연관된 엔터티에 대한 정보를 저장하며, 이후 사용자가 이러한 엔터티와 연관된 데이터를 조작하려고 시도하면 이 오류가 발생합니다."
라고 하는데 많은 양의 데이터를 저장하려 해서 그렇단 전자의 내용은 이해가 되지만 이후의 내용은 어떤 내용인지를 잘 모르겠습니다;
예제 코드는 아래와 같습니다.
/////////////////////////////////////////////////////////////
List<DataObject> objectList = new List<DataObject>();
foreach (var item in serverData)
{
DataObject ob = new DataObject();
ob.data1 = item.data1;
ob......;
...
...
objectList.Add(ob);
}
db.DataObject.InsertAllOnSubmit(objectList );
//InsertAllOnSubmit은 4번 가량 호출 합니다.
db.SubmitChanges();
///////////////////////////////////////////////////////////////
대충 위와 같습니다.
추가 하는데는 예외가 발생하지 않지만 변경할 때 예외가 발생하는데요
어떤 문제인지 가늠이 되지를 않아 이렇게 글을 올립니다.
해당 부분에 대하여 노하우나 팁을 아시는 분이 있으시다면 부탁 드리겠습니다.