2009-05-12 2 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(); 
関連する問題