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

Meh*_*hdi 0 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();
}
Run Code Online (Sandbox Code Playgroud)


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

blu*_*blu 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();
Run Code Online (Sandbox Code Playgroud)