Ошибка удаляя запись с помощью Linq2SQL

Я получил сообщение об ошибке от клиента недавно, и не имею никакой удачи при разрешении его. Я надеюсь, что кто-то может дать мне некоторое понимание тому, что может быть неправильным.

Ошибка кажется достаточно простой:

Csla. DataPortalException: DataPortal. Удалите отказавший (Система. InvalidOperationException: Последовательность содержит больше чем один элемент в System. Linq. Счетный. SingleOrDefault[TSource] (IEnumerable '1 источник)

Вот мой метод DataPortal_Delete, который берет FileId (PK) в качестве параметра.

private void DataPortal_Delete(SingleCriteria<File, Guid> criteria)
    {
        using (var ctx = ContextManager<Ronin.Data.RoninDataContext>
                    .GetManager(Database.ApplicationConnection, false))
        {
            var data = ctx.DataContext.Files
                    .Single(row => row.FileId == criteria.Value);

            ctx.DataContext.FileSources.DeleteAllOnSubmit(data.FileSources);

            ctx.DataContext.Files.DeleteOnSubmit(data);

            ctx.DataContext.SubmitChanges();
        }
    }

Первая вещь, которую я проверяю, состояла в том, чтобы видеть, была ли другая запись с тем же FileId (будучи первичным ключом, это должно быть невозможно). Все FileIds были на самом деле уникальны. Я запустил приложение, соединяющееся с клиентской базой данных, и попытался удалить запись, и это работало без любых проблем. Парень IT на клиентском сайте использовал "проблемное Устройство записи Шага", чтобы отправить мне шаг за шагом снимки экрана мер, принятых пользователем. Ничто необычное, и когда он использовал другую машину, он смог удалить запись без любых ошибок. По-видимому, это только происходит, когда приложение запущено в Windows 7.

Тем не менее какие-либо идеи относительно того, что могло вызывать это?

6
задан mattruma 21 January 2010 в 13:49
поделиться

2 ответа

$('[name=whatever]').val()

Документация jQuery является вашим другом.

-121--774555-

Когда необходимо выполнить сериализацию, обычно выполняется проецирование на другие типы. Это устраняет циклические ссылки, а также другие данные, которые я не хочу сериализовать. Например:

var q = (from c in Repository.Customers()
         where c.Id == id
         select new 
         {
             Name = c.Name,
             Orders = from o in C.Orders
                      select new
                      {
                          Date = o.Date
                      }
         }).First();
return Json(q);
-121--3549693-

Предполагая, что вызов Single является источником проблемы, вместо:

ctx.DataContext.Files.Single(...)

измените код, чтобы разрешить возврат нескольких строк из этого запроса, а затем зарегистрируйте то, что он возвращает, когда возвращает более одной строки. Это указывает на проблему с «дублирующимися» данными.

Еще одна вещь, на которую нужно взглянуть, - это SQL, генерируемый за кадром. Не уверен, что это поможет, но это не может навредить. Я не знаю вашу модель данных, поэтому не могу понять ваш код так хорошо, как хотелось бы.

1
ответ дан 17 December 2019 в 22:13
поделиться

Если это происходит только в Windows 7, то причина может быть в ОС. Пробовали ли вы сделать это в Vista? Среда Vista похожа на Windows 7. Вы также можете использовать Windows Virtual PC + XP Mode. Это приложение виртуализации, специально разработанное для Windows 7, чтобы пользователи могли запускать приложения, как в Windows XP. Примечание: XP Mode требует процессор с поддержкой виртуализации.

0
ответ дан 17 December 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: