Не удается неявно преобразовать тип DbSet <> в IQueryable <> - PullRequest
0 голосов
/ 19 февраля 2019

Я создал oData в ASP.NET WEB API, используя эту документацию. OData в 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

В то время как Item моя модель.

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; }
}

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете попытаться использовать linq AsQueryable, в противном случае вы вернете только DbSet<sap_dataaccess.sap_item>, который будет преобразован как неудачный.

[EnableQuery]
public IQueryable<Item> Get()
{
    return db.sap_item.AsQueryable();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...