[linq] Cannot add an entity that already exists
От: ascii32  
Дата: 17.05.08 15:55
Оценка:
Здравствуйте. Не могу понять, в чем дело.
Есть две базы, одна обновляется данными из другой.

Процесс обновления происходит следующим образом. Вызывается GetRooms(), выбираются данные из второй базы, производится шаманство и результирующий список попадает на вход функции ReplaceOldValues.

public static List<Room> GetRooms()
{
    return (from r in LinqUtil.Db.Rooms select r).ToList<Room>();
}

public static void ReplaceOldValues(List<Room> rooms)
{
    LinqUtil.Db.Rooms.DeleteAllOnSubmit(GetRooms());
    DAL.LinqUtil.SubmitChanges();
    //var test = GetRooms();
    LinqUtil.Db.Rooms.InsertAllOnSubmit(rooms);
    DAL.LinqUtil.SubmitChanges();
}


Данный подход (в данной реализации) работает исключительно с пустой БД. Если заполняемая база не пуста, то выделеная строчка кидает эксепшн: Cannot add an entity that already exists. Что странно, в режиме отладки, закомментированая переменная test имеет count = 0 (т.е. не содержит записей).

В итоге я получаю, что алгоритм работает через раз. Данных нет — данные появляются — Данных нет (в результате эксепшена) — данные появляются — ..

Подскажите пожалуйста, что я делаю не так.
P.S. Критика алгоритма также приветствуется.
дайте слепому показать вам дорогу.
(Р. Бредбери "Смерть — дело одинокое")
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.