Первый вопрос: для какой версии Entity Framework ?? .NET 3.5? .NET 4 ?? Вещи значительно изменились (и улучшились!) В .NET 4.
А во-вторых: что вы хотите сделать:
извлечение строк из базы данных
выполнить сохраненный процесс без возвращаемого значения
отобразить операции INSERT / UPDATE / DELETE на объекте с сохраненным процессом ??
Это три довольно разных сценария, поэтому нам нужно знать, к чему вы стремитесь.
Также: просто выполните поиск с помощью Google (или Bing) - есть множество постов в блогах и учебных пособий, показывающих, как это сделать - быстрый список:
и буквально тысячи других ......
Обновление: ОК, поэтому вы хотите получить данные из базы данных. В этом случае ваши шаги:
- перейти к вашей модели EF (* .edmx файл) в конструкторе
- щелкните правой кнопкой мыши и выберите
Update Model from Database
- выберите хранимую процедуру, которую вы хотите использовать, и пройдите мастер
Это создает запись для хранимой процедуры в вашей физической модели хранения. Далее:
- перейдите в
Model Browser
(см. Контекстное меню выше? Это чуть ниже Update Model from Database
), перейдите к модели хранилища и найдите вашу процедуру
- щелкните правой кнопкой мыши по этой процедуре
- Выберите
Add Function Import
, который импортирует «функцию» (хранимую процедуру) из физической модели хранения в концептуальную модель (в основном, контекстный класс вашей сущности).
Здесь у вас есть четыре варианта:
- ваш сохраненный процесс может ничего не возвращать (как в моем примере) - тогда вы можете просто вызвать метод в вашем классе контекста, который что-то делает
- ваш сохраненный процесс может вернуть коллекцию скаляров, например список значений INT или что-то - выберите соответствующее значение в раскрывающемся списке
- ваш сохраненный процесс может вернуть сущностей из вашей модели, например завершить
Customer
сущности - в этом случае выберите последний вариант и выберите сущность, с которой вы хотите сопоставить (ваш сохраненный процесс должен вернуть все столбцы для этой сущности, в данном случае)
OR
- ваш хранимый процесс возвращает что-то - но не только скаляры (не просто INT), ни сущность - в этом случае вы можете выбрать третий вариант и определить новый сложный тип (класс), который будет содержать ваши результаты, возвращенные из хранимая процедура.
Что бы вы ни делали - в основном EF создаст метод для вашего класса контекста объекта, который вы можете вызвать. Любые параметры, которые требует ваш сохраненный процесс, будут параметрами этого метода , так что вы можете очень легко передать, например, строки, целые и т. д.