Как вставить несколько строк в команду foreach с помощью LINQ? - PullRequest
0 голосов
/ 13 мая 2009

Я написал эти строки:

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


и CatIds - это целочисленный массив.
эта команда вставляет первый элемент правильно, но следующий цикл вызывает это исключение:
"Невозможно добавить сущность, которая уже существует."
Как я могу это исправить.
Пожалуйста, помогите мне как можно скорее!

Ответы [ 2 ]

6 голосов
/ 13 мая 2009

как сказал Джимми, вам нужно создать новую AdCategory в цикле. Вы также, вероятно, не хотите каждый раз вызывать SubmitChanges, этот вызов использует транзакцию, чтобы убедиться, что все элементы добавляются одновременно или вообще не добавляются.

Попробуйте что-то вроде:

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

EngineDB.SubmitChanges();
1 голос
/ 13 мая 2009

Вам необходимо создать новую AdCategory в цикле. В противном случае, как говорится в сообщении об ошибке, вы пытаетесь вставить один и тот же объект снова и снова.

Вы также должны двигаться

EngineDB.SubmitChanges();

вне цикла, поэтому вы делаете только 1 вызов в базу данных.

...