繁体   English   中英

从实体框架SqlQuery访问未映射的实体

[英]Accessing un-mapped entities from Entity Framework SqlQuery

我正在使用实体框架,我有一个实体类,其中包含2个字段:

  • 名称
  • 描述

我有一个存储过程,该过程返回上面的实体以及另外一个称为TotalRecords实体。 我在上面的类中创建了一个名为TotalRecords的新实体,并向其添加了[NotMapped]属性。

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

这是我调用SqlQuery来执行存储过程的方法:

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

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

您要做的就是创建一个对象,该对象的属性名称与存储过程返回的结果相同。 您可以尝试遵循示例。 希望对您有帮助,我的朋友。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM