[英]Error using a subset of fields in Entity Framework
我是第一次在WebAPI服務中使用EF 4。 我了解EF的基礎知識,但是當我習慣使用ADO時,它仍然有點學習困難。
我只想返回表中超過100個字段的子集(5)。
模型(由EF生成):
public partial class ITEM_MASTER
{
public string IM_ITEM_CODE { get; set; }
public string IM_UPC { get; set; }
public string IM_SUBDEPARTMENT { get; set; }
public string IM_DESC { get; set; }
...
}
在我的控制器中獲取方法:
// GET api/Products
public IQueryable<ITEM_MASTER> GetProduct()
{
// return db.ITEM_MASTER;
return db.ITEM_MASTER.Select(x => new ProductList { ItemCode = x.IM_ITEM_CODE });
}
return db.ITEM_MASTER
可以正常工作,但是使用.Select方法時出現錯誤:
無法將類型
'System.Linq.IQueryable<JWebAPI.Models.ProductList>'
隱式轉換為'System.Linq.IQueryable<JWebAPI.Models.ITEM_MASTER>'
。 存在顯式轉換(您是否缺少演員表?)
public class ProductList
{
public string ItemCode {get; set;}
}
ProductList類用作占位符對象,因為使用.Select返回DBQuery而不是原始對象類型。 我讀到,這是處理這種情況的理想方法。 我會在它工作時為其添加更多屬性。 我有一個下載的示例,該示例的結構相同,並且可以正常工作。
這是做我需要的最好的方法,只返回EF字段的一個子集嗎? 我該如何解決轉換錯誤?
好了,錯誤很明顯,您的方法應該返回IQueryable<ITEM_MASTER>
但是您正在嘗試返回'System.Linq.IQueryable<JWebAPI.Models.ProductList>'
。
由於將查詢結果投影到'System.Linq.IQueryable<JWebAPI.Models.ProductList>'
需要將其作為返回類型。
// GET api/Products
public IQueryable<ProductList> GetProduct() //Change return type
{
// return db.ITEM_MASTER;
return db.ITEM_MASTER.Select(x => new ProductList { ItemCode = x.IM_ITEM_CODE });
}
由於您只選擇原始實體的一個子集,因此無法投影到映射到Entity框架中的表的實體,這就是為什么需要占位符類ProductList
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.