Я создаю сайт ASP.NET MVC с помощью ADO.NET Entity Framework. У меня есть модель объекта, которая включает эти объекты, связанные внешними ключами:
Отчет(ID, Дата, Заголовок, Report_Type_ID и т.д.)
- SubReport(ID, ReportText, etc.) - one-to-one relationship with Report.
- ReportSource(ID, Name, Description) - one-to-many relationship with Sub_Report.
- ReportSourceType(ID, Name, Description) - one-to-many relationship with ReportSource.
- Контакт (идентификатор, имя, адрес и т. д.) — отношение один к одному с Report_Source.
- ReportSource(ID, Name, Description) - one-to-many relationship with Sub_Report.
Для каждого типа вложенного отчета существует страница Create.aspx. Метод публикации события возвращает новую сущность Sub_Report.
Раньше в моем методе публикации я следовал этому процессу:
- Задайте свойства для нового объекта отчета в полях страницы.
- Задайте конкретные свойства объекта SubReport из полей страницы.
- Установите отчет объекта SubReport на новый объект отчета, созданный в 1.
- Учитывая идентификатор, предоставленный страницей, найдите ReportSource и установите ReportSource сущности Sub_Report на найденную сущность.
- Сохранить изменения.
Этот рабочий процесс успешно работал в течение нескольких недель. Затем на прошлой неделе что-то изменилось, и он больше не работает. Теперь вместо операции сохранения я получаю это исключение:
UpdateException: "Entities in 'DIR2_5Entities.ReportSourceSet' participate in the 'FK_ReportSources_ReportSourceTypes' relationship. 0 related 'ReportSourceTypes' were found. 1 'Report_Source_Types' is expected."
Визуализатор отладки показывает следующее:
- ReportSource SubReport установлен и загружен, и все его свойства верны.
- Report_Source имеет прикрепленную допустимую сущность ReportSourceType.
В SQL Profiler подготовленный оператор SQL выглядит нормально. Может ли кто-нибудь указать мне, какую очевидную вещь мне не хватает?
ТИА
Примечания: в этом случае отчет и вложенный отчет всегда являются новыми объектами. Сущность отчета содержит свойства, общие для многих типов отчетов, и используется для общих запросов. SubReports — это специальные отчеты с дополнительными параметрами, различающимися по типу. На самом деле для каждого типа SubReport существует свой набор сущностей, но этот вопрос относится ко всем из них, поэтому я использую SubReport в качестве упрощенного примера.