отображение хранимых процедур Entity Framework - PullRequest
0 голосов
/ 09 июля 2010

Мы используем импорт функций в модели EF4 для заполнения существующей сущности в нашей модели.У сущности в модели есть ключевое поле Id, которое мы пытаемся отобразить, поскольку наша хранимая процедура не возвращает поле Id.Я попытался установить значение в сопоставлении на буквальное значение 0, но это не удается с EntityCommandExecutionException и следующим текстом исключения.

Устройство чтения данных несовместимо с указанным «Кандидатом».Элемент типа «Id» не имеет соответствующего столбца в считывателе данных с тем же именем.

Если не считать изменения хранимой процедуры для возврата фиктивного поля Id, может кто-нибудь порекомендоватьлучший подход для этого, так как вариант фиктивного поля кажется мне очень неуклюжим.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 26 июля 2012

Используйте другой класс POCO с той же структурой для получения результатов вызова хранимой процедуры, вот пример:

string sp = string.Format("EXEC dbo.spComercialesAsociadosActivos {0}", idComercialPrincipal);
return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<InfoComercial>(sp);

В этом случае «InfoComercial» - это класс POCO с такой же структурой, как и «Comercial ", который сначала связан с кодом EF в DBContext, затем я использовал этот независимый класс в viewModel для создания отключенного" Comercial ", это не идеальное решение, но будет работать до тех пор, пока EF 5 не получит поддержку SP.

0 голосов
/ 09 июля 2010

Если вы не можете вернуть достаточно данных, чтобы полностью материализовать сущность - и поле Id равно , безусловно, для этого потребуется - тогда вам нужно изменить тип возврата в процедуре на быть сложным типом вместо сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...