Хранимые процедуры и код EF сначала - PullRequest
11 голосов
/ 05 апреля 2011

Я хотел бы использовать хранимую процедуру для извлечения сущностей из БД, меня не волнует отслеживание изменений.Мне просто нужно разрешить все сущности, включая связанные.

  1. Нужно ли использовать SqlCommand?

  2. А как насчет сложных свойств, они тоже будут разрешены?

  3. Какие-либо другие ограничения, о которых вы могли бы мне рассказать?

Спасибо!

Ответы [ 4 ]

6 голосов
/ 05 апреля 2011

Общий ответ об использовании хранимых процедур в EF: здесь , поэтому хранимая процедура в чистом EF не будет обрабатывать свойства навигации.В ответе также упоминается EFExtensions , но это недоступно в DbContext API.

Для выполнения хранимой процедуры в DbContext API используйте:

var entities = context.Database.SqlQuery<MyEntity>(...);

DbContext API не предлагаетлюбая функция импорта, например, EDMX и ObjectContext API.

5 голосов
/ 05 апреля 2011

Хранимые процедуры не поддерживаются в Code First .Так что да, вам придется использовать SqlCommand или любую другую предоставляемую вами БД, если вы собираетесь использовать Code First.

Хранимые процедуры поддерживаются в DB First или Model First.

0 голосов
/ 17 октября 2014

Рассматривая первый подход к базе данных, в автоматически сгенерированном классе контекста он определяет хранимые процедуры как виртуальные функции. Здесь я разделяю функцию из моего проекта, эта хранимая процедура возвращает сложный тип вопроса.

public virtual ObjectResult<Question> GetMyInnerQuestions(Nullable<int> id)
        {
            var idParameter = id.HasValue ?
                new ObjectParameter("Id", id) :
                new ObjectParameter("Id", typeof(int));

            return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Question>("GetMyInnerQuestions", idParameter);
        }

Сначала я использовал это в своем коде. Могу ли я вызывать хранимые процедуры, такие как функции:

IQueryable<Question> questions = db.GetMyInnerQuestions(id).AsQueryable();

Надеюсь, эта помощь

0 голосов
/ 05 апреля 2011

Попробуйте импортировать функцию: http://msdn.microsoft.com/en-us/library/dd456824.aspx

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