Доступ к неотображенным объектам из Entity Framework SqlQuery - PullRequest
0 голосов
/ 08 сентября 2018

Я использую Entity Framework, у меня есть класс сущностей, который имеет 2 поля:

  • Имя * * 1004
  • Описание

У меня есть хранимая процедура, которая возвращает точно указанные выше объекты плюс дополнительный объект, который называется TotalRecords. Я создал новую сущность в своем классе выше под названием TotalRecords и добавил к ней атрибут [NotMapped].

Теперь, когда я вызываю хранимую процедуру, она не сопоставляется с новой сущностью TotalRecords; Я понимаю, потому что я добавил атрибут [NotMapped], но если я не применю этот атрибут, он просто создаст новый столбец в моей таблице базы данных, что не является моим намерением.

Вот как я звоню SqlQuery для выполнения хранимой процедуры:

var _products = db.Products.SqlQuery("GetProductsByCategory @p0,@p1,@p2", categoryID, pageIndex, Common.PAGE_SIZE).ToList();

Может кто-нибудь сказать мне, как я могу получить поле TotalRecords из хранимой процедуры, не добавляя новый столбец в базу данных? Как я уже говорил выше, у меня есть только один дополнительный столбец, все остальные сопоставляются с таблицей базы данных Products

1 Ответ

0 голосов
/ 09 сентября 2018

Все, что вам нужно сделать, - это создать объект, который имеет те же имена свойств, что и результаты, возвращаемые хранимой процедурой. Вы можете попробовать следовать примеру. Надеюсь помочь, мой друг.

1) Сначала создайте класс, подобный этому:

public class ProductResult
    {
        public string Name { get; set; }

        public string Description { get; set; }

        public decimal TotalRecords { get; set; }
    }

2) А затем вызвать процедуру:

using(var context = new DatabaseContext())
    {
            var categoryIdParameter = new SqlParameter("@p0", categoryID);
            var pageIndexParameter = new SqlParameter("@p1", pageIndex);
            var pageSizeParameter = new SqlParameter("@p2", Common.PAGE_SIZE);

            var result = context.Database
                .SqlQuery<ProductResult>("GetProductsByCategory @p0, @p1, @p2", categoryIdParameter, pageIndexParameter, pageSizeParameter)
                .ToList();
    }

Результат будет содержать список объектов ProductResult.

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