ObjectSet и ResultSet для хранимой процедуры в EF и доменной службе - PullRequest
2 голосов
/ 19 июля 2010

В EF 4 набор объектов по умолчанию доступен для каждого объекта.Например, у меня есть таблица Employee, после создания Entity Model EF создаст ObjectSet для Employee.Затем при использовании службы wcf ria запрос по умолчанию будет выглядеть так:

public IQueryable GetEmployee () {return this.ObjectContext.Employees;}

С помощью objectSet я могу применить include к результату, например:

    return this.ObjectContext.Employees.Include("Department");

Затем я создаю хранимую процедуру скажем MySearchForEmployee и импортирую ее как функцию.результат сопоставляется с сущностью Employee.При вызове функции результатом будет ResultSet, а не ObjectSet.

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

   public IQueryable<Employeer> GetMySearch(string keyword)
        {
            return this.ObjectContext.MySearchForEmployee(keyword).Include("Department");
        }

Но я не могупотому что выше кодовое событие не может пройти проверку синтаксиса.

Я попробовал следующий способ подтверждения типа результата:

 var results = this.ObjectContext.MySearchForEmployee(keyword);
 var objsets = (ObjectSet<Employee>) results;

, затем я получил сообщение об ошибке: Не удалось преобразовать тип 'System.Data.Objects.ObjectResult' в 'System.Data.Objects.ObjectSet '

Как реализовать этот запрос?

1 Ответ

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

Нет причин использовать ObjectSet, потому что вы не можете включить несколько наборов сущностей в один запрос из хранимой процедуры. Это не поддерживается в Entity Framework.

Вы можете попробовать проект EFExtensions , он имеет расширения для загрузки нескольких наборов объектов из одного запроса.

...