我写了这些文字:
foreach (var catId in CatIds)
{
AdCategory.AdId = LastAd.AdID;
AdCategory.CategoryId = catId;
EngineDB.Ad_Categories.InsertOnSubmit(AdCategory);
EngineDB.SubmitChanges();
}
和CatIds是一个整数数组
此命令正确插入第一个元素但下一个循环导致此异常:
“无法添加已存在的实体。”
我该如何解决呢?
请尽快帮助我!
答案 0 :(得分: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();
答案 1 :(得分:1)
您需要在循环中创建新的AdCategory。否则,正如错误所述,您要一次又一次地插入同一个对象。
你也应该移动
EngineDB.SubmitChanges();
在循环之外,所以你只对数据库进行1次调用。