Считыватель данных несовместим с указанным StoredProcedureReturn - PullRequest
0 голосов
/ 06 февраля 2019

Я пишу хранимую процедуру, в которой я создал JOIN и получаю данные из двух таблиц.

Я получаю имя Invigilator, а также название города из JOIN в хранимой процедуре, но в Entity Framework хранимая процедура не выполняетсяНиже приведено исключение, что

Сообщение «Считыватель данных несовместим с указанным« pts_dbnModel.GetInviglatorData_Result ». Член типа« Name1 »не имеет соответствующего столбца в данныхчитатель с тем же именем. "строка

select s.Name,s.contact ,c.Name ,s.frequency,s.cnic from zaid.invigilator s
INNER JOIN zaid.city c ON s.city=c.ID
INNER JOIN CompaignInvigilatorMapping m ON s.ID=m.InvigilatorId
INNER JOIN [hasnat.compaign] h ON m.CompaignId=h.ID where 
h.CompaignName=@CompName

Теперь проблема в поле Имя.Потому что s.Name из таблицы Invigilator, а c.Name из таблицы City.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

У вас есть две таблицы с одинаковыми именами столбцов, с вашим запросом выбора проблем нет, как вы делали раньше, если вы не укажете имена столбцов (например, s.Name,c.Name), вы получите исключение как

Неоднозначное имя столбца 'Имя'.

но ваша проблема касается EF, это сообщение об ошибке означает, что результат вашей хранимой процедуры не содержит столбец с именем Name1, выесть два варианта решения проблемы.

1 - Представьте Name1 в вашей хранимой процедуре под псевдонимом, например:

select s.Name as Name1,s.contact ,c.Name ,s.frequency,s.cnic from zaid.invigilator s
INNER JOIN zaid.city c ON s.city=c.ID
INNER JOIN CompaignInvigilatorMapping m ON s.ID=m.InvigilatorId
INNER JOIN [hasnat.compaign] h ON m.CompaignId=h.ID where 
h.CompaignName=@CompName

2- Или сделайте вашу модель EF и запрос совместимыми с выводом вашей хранимой процедуры (дляпример переименования Name1 в Name в EF модели).

Ваша хранимая процедура не имеет проблемы самостоятельно, но она должна быть совместима с вашей EF моделью или наоборот.

0 голосов
/ 06 февраля 2019

использовать псевдоним

select s.Name as invaigilatorName,s.contact ,c.Name as cityName ,s.frequency,s.cnic from zaid.invigilator s
INNER JOIN zaid.city c ON s.city=c.ID
INNER JOIN CompaignInvigilatorMapping m ON s.ID=m.InvigilatorId
INNER JOIN [hasnat.compaign] h ON m.CompaignId=h.ID where 
h.CompaignName=@CompName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...