0

我正在使用实体框架,我有一个实体类,它有 2 个字段:

  • 姓名
  • 描述

我有一个存储过程,它返回的正是上面的实体加上一个名为TotalRecords. 我在上面的类中创建了一个新实体,TotalRecords并为其添加了一个属性[NotMapped]

现在,当我调用存储过程时,它不会映射到新实体TotalRecords;我理解是因为我在其上添加了一个属性[NotMapped],但如果我不应用该属性,它只会在我的数据库表中创建一个新列,这不是我的意图。

这是我调用SqlQuery以执行存储过程的方式:

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

谁能告诉我如何TotalRecords从存储过程中获取字段,而不在数据库中添加新列?正如我上面所说,我只有一列额外的其余部分都被映射到数据库表Products

4

1 回答 1

0

您所要做的就是创建一个与存储过程返回的结果具有相同属性名称的对象。您可以尝试按照示例进行操作。希望对你有所帮助,我的朋友。

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 对象的列表。

于 2018-09-09T02:55:56.347 回答