ADO.NET Ef4 - Как я могу сопоставить сущность с хранимой процедурой без сопоставления с таблицей - PullRequest
0 голосов
/ 13 июля 2010

Мы используем структуру сущностей ado.net 4.0 для нашего уровня базы данных, и я новичок в структуре сущностей ado.net. Я создал сущность путем добавления сущности в рамках сущности. Я хочу сопоставить эту сущность только с хранимой процедурой, а не с таблицей базы данных. Хранимая процедура вернет тот же столбец, что и сущность. Как это возможно и как я могу сделать это без сопоставления с таблицей?

Ответы [ 3 ]

1 голос
/ 15 июля 2010

Это невозможно, потому что ObjectSet является IQueryable, и сопоставление ObjectSet с хранимой процедурой не даст IQueryable, поскольку хранимые процедуры по самой своей природе не могут быть составлены. Лучшее, что вы можете сделать, - это взять содержимое внутри хранимой процедуры, поместить в представление и сопоставить представление с ObjectSet, что возможно.

1 голос
/ 13 июля 2010

Вот полное прохождение игры http://msdn.microsoft.com/en-us/library/cc716679.aspx

0 голосов
/ 17 февраля 2012

Вам нужно создать сложный тип, а не сущность.Откройте браузер модели и импортируйте вашу хранимую процедуру как «импорт функции» (ваш SP не должен использовать #tempTables, но вместо этого вы можете использовать @tableVariables);в мастере импорта функций вы увидите кнопку «создать сложный тип».

SP становится методом в контексте модели, и вы можете использовать его для получения IEnumerable [TheComplexType].

В коде EF4.1, во-первых, это еще проще: вы помещаете атрибут [ComplexType] поверх любого класса, и вы можете использовать этот тип в качестве типа возврата для context.ExecuteStoreQuery [T].Если ваши свойства названы точно так же, как возвращаемые столбцы (и типы выстроены в ряд), сопоставление будет «волшебным» - оно просто работает.

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