无法将类型 DbSet<> 隐式转换为 IQueryable<>

Cannot implicitly convert type DbSet<> to IQueryable<>

我使用此文档在 ASP.NET WEB API 中创建了一个 oData。 OData in ASP.NET Web API。我的 EF 在另一个项目上,所以我只添加对我的 WEB API 项目的引用。创建我的端点后。

    public class ItemController : ODataController
{
    SAP_PORTALEntities db = new SAP_PORTALEntities();
    private bool ItemExists(string key)
    {
        return db.sap_item.Any(s => s.ItemCode == key);
    }
    protected override void Dispose(bool disposing)
    {
        db.Dispose();
        base.Dispose(disposing);
    }

    [EnableQuery]
    public IQueryable<Item> Get()
    {
        return db.sap_item;
    }

    [EnableQuery]
    public SingleResult<sap_item> Get([FromODataUri] string key)
    {
        var item = db.sap_item.Where(s => s.ItemCode == key);
        IQueryable<sap_item> itemModel;

        itemModel = item;

        return SingleResult.Create(itemModel);
    }

    public async Task<IHttpActionResult> Post(sap_item item)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        db.sap_item.Add(item);
        await db.SaveChangesAsync();

        return Created(item);
    }
}

此行出现错误:IQueryable Get()

Cannot implicitly convert type 'System.Data.Entity.DbSet<sap_dataaccess.sap_item>' to 'System.Linq.IQueryable<sap_portal.Models.Item>'. An explicit conversion exists

虽然 物品 是我的模型。

public class Item
{ 
    public string ItemCode { get; set; }
    public string Dscription { get; set; }
    public string ItemGroup { get; set; }
    public string InvItem { get; set; }
    public string PurItem { get; set; }
    public string SalItem { get; set; }
    public string UOMGroup { get; set; }
    public string Manufacturer { get; set; }
    public string Active { get; set; }
    public string PurUOM { get; set; }
    public Nullable<decimal> QtyPurUOM { get; set; }
}

你可以尝试使用 linq AsQueryable 否则你只会 return DbSet<sap_dataaccess.sap_item> 将转换类型失败。

[EnableQuery]
public IQueryable<Item> Get()
{
    return db.sap_item.AsQueryable();
}