Я создал 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; }
}