Хорошо, вам нужно сделать несколько шагов:
- добавьте вашу хранимую процедуру
sp_GetDepartmanData
в модель Entity Framework
(кроме того, настоятельно рекомендуется НЕ для вызова хранимых процедур sp_(something)
- использование префикса sp_
зарезервировано только для системных хранимых процедур Microsoft)
- поскольку ваша хранимая процедура возвращает набор данных, вам необходимо сначала создать концептуальную сущность для нее, прежде чем вы сможете использовать свой хранимый процесс; в Entity Designer создайте новый объект и назовите его некоторым полезным именем, например
DepartmentDataEntityType
или чем-то еще; добавить все поля, возвращаемые из хранимой процедуры, к этому типу сущности
- Теперь вы можете создать импорт своей функции в модели данных объекта - перейдите в браузер модели, в разделе «model.store» перейдите к хранимой процедуре и щелкните правой кнопкой мыши «Create import import»
- теперь вы можете дать своей функции в контексте объекта имя и определить, что она возвращает - в этом случае выберите вновь созданный тип сущности (например,
DepartmentDataEntityType
сверху)
- все готово!
Теперь у вас должна быть функция import что-то вроде:
public global::System.Data.Objects.ObjectResult<DepartmentDataEntityType> GetPersonelInformationWithDepartmanID(global::System.String departmentName)
{
global::System.Data.Objects.ObjectParameter departmentNameParameter;
departmentNameParameter = new global::System.Data.Objects.ObjectParameter("departmentNameParameter", departmentName);
return base.ExecuteFunction<DepartmentDataEntityType>("sp_GetDepartmanData", departmentNameParameter);
}
Эта функция в контексте вашего объекта теперь может быть вызвана для извлечения данных через хранимую процедуру из вашей базы данных.
Марк
Edit:
Если после этого вы получаете ошибку сопоставления («Ошибка 3027: сопоставление не указано для следующего EntitySet / AssociationSet»), то это потому, что созданный вами объект не сопоставлен ни с чем и используется только при импорте функции заполняет коллекцию этих лиц. Вам либо нужно как-то сопоставить эту сущность с хранилищем данных, либо изменить ее на сложный тип.
Чтобы создать сложный тип, просто откройте конструктор EF и щелкните правой кнопкой мыши пустую область. Перейти к Добавить> Комплексный тип. Вы должны увидеть новый сложный тип в браузере модели. Щелкните правой кнопкой мыши по нему и добавьте скалярные свойства, аналогичные тому, как вы добавили свойства к своей сущности. Затем удалите свою сущность и переименуйте ваш сложный тип так же, как сущность.
Это все, что вам нужно сделать:)