Entity Framework — использование хранимой процедуры, которая возвращает одинаковые имена столбцов из разных сущностей

У меня есть таблицы с именами «Контакт» и «Адрес», и обе они имеют столбец «ModifiedDate». Я написал операции CUD, используя хранимые процедуры. Однако, когда дело дошло до хранимой процедуры SELECT, в которой мне нужно было вернуть все контакты с их адресами, я получил ошибку.

System.Data.EntityCommandExecutionException: средство чтения данных несовместимо с указанным «AddressBookModel.SelectAllContactsWithAddresses_Result2». Член типа ModifiedDate1 не имеет соответствующего столбца в средстве чтения данных с таким же именем.

В итоге я изменил хранимую процедуру, чтобы она возвращала разные псевдонимы для этих имен столбцов, и, к сожалению, мне также нужно было изменить свойства объектов в модели, чтобы они соответствовали выбранному столбцу. Я написал сообщение в блоге об этом здесь . Я знаю, что мог бы иметь отдельные выборочные SP (и отдельные импорты функций) для обеих сущностей, но это только одна ситуация, которая может произойти и в других случаях, когда из сложного запроса могут возвращаться одни и те же имена столбцов. из нескольких таблиц в SP. Может ли кто-нибудь дать какое-либо направление по этому поводу?


person Ashish Gupta    schedule 04.09.2010    source источник


Ответы (1)


Я разместил тот же вопрос на форумах MS для EF здесь (извините за перекрестную публикацию), и модератор подтвердил, что это ошибка в EF, и попросил меня создать ошибку в Microsoft Connect, а идентификатор ошибки — 597376, и вот ссылка на то же самое.

от Lingzhi Sun MSFT, поддержка модераторов на форуме>

Hello,   After some research and test,
> I can repro this issue at my side.  
> It can be a limitation of EF when
> handling stored procedure return
> values.  I would recommend you open a
> ticket at Microsoft Connect to report
> this issue to the product team.   If
> it is convenient, please share us with
> the ticket link here to benefit more
> community members.  
person Ashish Gupta    schedule 13.09.2010