Массовая вставка с LINQ to SQL, допускающая некоторые сбои - PullRequest
1 голос
/ 06 января 2011

Итак, у нас есть сервис, который принимает список обновлений через сервис WCF, который затем должен быть записан в БД.некоторые из них могут потенциально потерпеть неудачу (1000 обновлений / вставок в запросе), и если они это сделают, необходимо записать оставшиеся вставки / обновления, а ошибки не будут зарегистрированы для последующей обработки ...

вопрос в том, как это сделать в LINQ to SQL.на данный момент я делаю что-то вроде следующего:

        TestDataContext dc = new TestDataContext();
        Random r = new Random();
        for (int i = 0; i < 300; i++)
        {
            Table table = new Table { randomNumber = r.Next(150) };
            dc.Tables.InsertOnSubmit(table);
        }
        try
        {
            dc.SubmitChanges();

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

в этом примере Table.randomNumber является первичным ключом.в наборе данных должны быть дубликаты перед записью, но когда я вызываю dc.SubmitChanges (), он выдает исключение ... вместо вызова dc.SubmitChanges () после каждой итерации, есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 05 октября 2011

В итоге я отправил каждую строку в том виде, в котором она была написана, и обнаружил все ошибки.таким образом, я могу поймать неудачи, но правильно вставить остальное.Это не так медленно, как хотелось бы, но не идеально ... заметьте, поскольку этот процесс выполняется "в автономном режиме" (бэкэнд-обработка), он работает для того, что нам нужно.

...