Мы сталкиваемся со странной проблемой с Entity Framework 4. Наша модель содержит сущность, которая связана с 3 сущностями, давайте назовем их дочерними элементами первого уровня. Один из дочерних объектов связан с другим объектом - давайте назовем его дочерним объектом второго уровня.
Все эти 5 сущностей сопоставлены с хранимыми процедурами для выполнения вставки, обновления и удаления.
Перед отображением хранимых процедур порядок запросов на вставку, выданных структурой сущностей, был правильным - сначала выдается запрос на вставку основной таблицы, затем выдается запрос на вставку для дочерних элементов первого уровня и, наконец, выдается запрос на вставку для дочерних элементов второго уровня.
Но после сопоставления хранимых процедур сущностная структура отправляет операторы выполнения хранимых процедур в неправильном порядке - хранимая процедура вставки первой основной таблицы, а затем хранимые процедуры вставки для 2 дочерних элементов первого уровня (которые не являются родительскими для дочернего элемента второго уровня), затем дочерняя хранимая процедура (ы) второго уровня (для нескольких записей) и, наконец, хранимая процедура вставки оставшегося дочернего процесса первого уровня, который является родителем дочернего элемента второго уровня.
Это создает проблему, поскольку вставка дочернего элемента второго уровня до вставки его родителя приводит к нарушению внешнего ключа.
При удалении отображения хранимой процедуры для таблицы, которая является родителем дочернего элемента второго уровня, она работает без проблем.
Кто-нибудь имеет представление о том, что определяет порядок операторов SQL, генерируемых структурой сущностей?