#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. Это интересно, потому что, когда я запрашиваю ту же таблицу и просто пытаюсь извлечь все строки, которые находятся в этом результирующем наборе. Но я разберусь с этим!