如何使用LINQ在foreach命令中插入多行?

时间:2009-05-12 21:33:21

标签: linq-to-sql c#-3.0

我写了这些文字:

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


和CatIds是一个整数数组 此命令正确插入第一个元素但下一个循环导致此异常:
“无法添加已存在的实体。”
我该如何解决呢?
请尽快帮助我!

2 个答案:

答案 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次调用。