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();