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

Linq to sql 如何使用LINQ在foreach命令中插入多行?,linq-to-sql,c#-3.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(); } CATID是一个整数数组。 此命令正确插入第一个元素,但下一个循环导致此异常: 无法添加已存在的实体

我写了以下几行:

foreach (var catId in CatIds)
{
    AdCategory.AdId = LastAd.AdID;
    AdCategory.CategoryId = catId;
    EngineDB.Ad_Categories.InsertOnSubmit(AdCategory);
    EngineDB.SubmitChanges();
}
CATID是一个整数数组。 此命令正确插入第一个元素,但下一个循环导致此异常: 无法添加已存在的实体。
我怎样才能修好它。请尽快帮助我

您需要在循环中创建一个新的AdCategory。否则,如错误所述,您将反复插入同一对象

你也应该搬家

EngineDB.SubmitChanges();

在循环之外,因此您只需对数据库进行一次调用。

正如Jimmie所说,您需要在循环中创建一个新的AdCategory。您可能也不希望每次都调用SubmitChanges,此调用使用一个事务来确保一次添加所有项,或者根本不添加任何项

尝试以下方法:

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

EngineDB.SubmitChanges();