簡體   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