2009-05-12 6 views
0

나는 다음과 같은 줄을 썼다 :LINQ와 함께 foreach 명령에 여러 행을 삽입하는 방법?

foreach (var catId in CatIds) 
{ 
    AdCategory.AdId = LastAd.AdID; 
    AdCategory.CategoryId = catId; 
    EngineDB.Ad_Categories.InsertOnSubmit(AdCategory); 
    EngineDB.SubmitChanges(); 
} 


그리고 CatIds는 정수 배열이다.
이 명령은 첫 번째 요소를 올바르게 삽입하지만 다음 루프는이 예외를 발생시킵니다.
"이미있는 엔터티를 추가 할 수 없습니다."
어떻게 해결할 수 있습니까?
가능한 빨리 도와주세요!

답변

1

루프에 새 AdCategory를 만들어야합니다. 그렇지 않으면 오류 상태로 동일한 객체를 반복해서 삽입하려고합니다. 만 데이터베이스에 1 전화를 걸 수 있도록

또한 루프의

EngineDB.SubmitChanges(); 

외부를 이동해야합니다.

6

Jimmie는 루프에 새로운 AdCategory를 만들어야한다고 말했습니다. 매번 SubmitChanges를 호출하기를 원하지 않을 수도 있습니다.이 호출은 트랜잭션을 사용하여 모든 항목이 한 번에 추가되는지 또는 전혀 추가되지 않는지 확인합니다.

시도 뭔가 같은 :

foreach (var catId in CatIds) 
{ 
    var AdCategory = new AdCategory() 
    { 
     AdId = LastAd.AdID, 
     CategoryId = catId 
    } 
    EngineDB.Ad_Categories.InsertOnSubmit(AdCategory); 
} 

EngineDB.SubmitChanges(); 
관련 문제