Невозможно использовать хранимую процедуру с моей Entity Framework v4 + POCO :(

У меня есть очень простой проект Entity Framework с сущностями POCO. У меня есть один файл stored procedure, который я импортировал с помощью файла EF Wizard. Кьюл.

Затем я сделал свой собственный EF Entity, который затем Add Function Import сопоставил Stored Procedure с моим EF Entity.

Теперь ... я не знаю, как сопоставить мой EF Entity с POCO. Таким образом, я продолжаю получать следующую ошибку:

Ошибка 11007: Тип объекта «XXXXX» не сопоставлен.

Я не уверен, как я могу сопоставить эту сущность с POCO. Кто-нибудь может помочь, пожалуйста?


person Pure.Krome    schedule 02.08.2010    source источник


Ответы (1)


Хорошо. это то, что я в итоге сделал.

Использование POCO

Т.е. .edmx, Custom Tool удалены / нет автоматически генерируемых объектов и т. д.

  1. Функция импорта :: вручную импортировать хранимую процедуру.

В вашем классе контекста...

public class SqlServerContext : ObjectContext, IUnitOfWork
{
    public SqlServerContext(EntityConnection entityConnection, 
                            ILoggingService loggingService)
        : base(entityConnection) { .... }

    public ObjectResult<Location> FindLocationsWithinABoundingBox(decimal upperLeftLongitude,
                                                                  decimal upperLeftLatitude,
                                                                  decimal lowerRightLongitude,
                                                                  decimal lowerRightLatitude)
    {
        return base.ExecuteFunction<Location>("FindLocationsWithinABoundingBox",
                                              new ObjectParameter("UpperLeftLatitude", upperLeftLongitude),
                                              new ObjectParameter("UpperLeftLongitude", upperLeftLatitude),
                                              new ObjectParameter("LowerRightLongitude", lowerRightLongitude),
                                              new ObjectParameter("LowerRightLatitude", lowerRightLatitude));
    }
}

Использование автоматически сгенерированных объектов и т. д. (по умолчанию EF настроен)

  1. Создайте собственный COMPLEX TYPE (который также будет использоваться для сопоставления хранимой процедуры).
  2. Функция импорта :: вручную импортировать хранимую процедуру.
  3. Сопоставьте RETURN TYPE (импортированного sp) с пользовательским COMPLEX TYPE, который вы создали.

это все.

Не уверен, что мой способ POCO - лучший способ сделать что-то, но он... ну... работает :)

И это связанный с StackOverflow вопрос I спросил об использовании этой хранимой процедуры в сервисах/IQueryable... :)

person Pure.Krome    schedule 03.08.2010
comment
Я столкнулся с той же проблемой. Как вы сопоставили возвращаемый тип с пользовательским сложным типом? Можете ли вы привести пример? заранее спасибо - person sTodorov; 17.05.2011
comment
Немного староват для комментария, но вы поняли, что у вас есть: UpperLeftLatitude => upperLeftLongitude и наоборот в приведенном выше коде? то есть карты широты на долготу? - person hitch; 30.10.2013
comment
ХАХАХА :) хорошая находка :) нет :( я не - person Pure.Krome; 30.10.2013