Сохраненные процедуры и код EF

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

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

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

  • Любые другие ограничения, о которых вы могли мне рассказать?

Спасибо!

Ответ 1

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

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

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

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

Ответ 4

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

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();

Надеемся на эту помощь