Неожиданная пустая последовательность в результате linq to sql

#c# #linq-to-sql

#c# #linq-to-sql

Вопрос:

У меня есть простой запрос, который удаляет запись из таблицы

         CB_User_Schedule deleted = (from x in db.CB_User_Schedules
                                    where x.ScheduleID == CurrentScheduleID
                                    select x).Single();
        db.CB_User_Schedules.DeleteOnSubmit(deleted);
        db.SubmitChanges();
  

Однако первая инструкция возвращает Sequence contains no elements . Я вижу, что при выполнении значение CurrentScheduleID на самом деле является числом, и когда я выполняю напрямую select * from CB_UserSchedules where ScheduleID = 3 , оно возвращает строку. Итак, почему мой оператор не находит эту строку в базе данных?

Ответ №1:

Проверьте отправленный SQL с помощью встроенного ведения журнала LINQ-to-SQL (подключите TextWriter к свойству Log в вашем DataContext) или SQL profiler. Более чем вероятно, что у вас несоответствие типа данных или ключевая проблема в вашем DBML (т. Е. Что-то не соответствует реальности в DB, и mapper на это плюет). Мы запускаем очень большой и сложный сайт почти исключительно на L2S, и такого рода проблемы почти всегда связаны со сломанным DBML.

Комментарии:

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