【发布时间】:2020-07-30 09:53:06
【问题描述】:
当我通过 OData 请求一些数据时,我将按请求获取数据,但不是 OData 信封/上下文。这意味着任何 OData 功能都不适用于客户端。
我试图了解我没有将 OData 信封与数据一起获取的原因。
设置如下:
- .Net Core
- OData
- PostgreSQL
我正在使用以下网址请求数据:http://localhost:5000/odata/mycontroller/mydbview。
控制器类:
public class MyController : ODataController
{
[EnableQuery]
[ODataRoute("MyController/MyDBView")]
public IActionResult GetSeasonView(int id)
{
var requestedItems = myTableContext.MyDBView;
return Ok(requestedItems);
}
}
EDM 模型:
public static IEdmModel GetEdmModel()
{
var odataModelBuilder = new ODataConventionModelBuilder();
odataModelBuilder.EntitySet<MyDataDto>("My");
return odataModelBuilder.GetEdmModel();
}
数据对象如下:
[Table("datatable", Schema = "api")]
public class MyDataDto
{
[Key]
public string Id { get; set; }
public string Status { get; set; }
public uint Total { get; set; }
<Continues with more data>
视图是数据表的子集,如下所示:
[Table("datatable", Schema = "api")]
public class MyDBView
{
[Key]
public string id { get; set; }
public string status { get; set; }
public uint total { get; set; }
}
对此设置可能有什么问题有任何建议吗?顺便说一句,我尝试遵循本指南:https://www.laboremus.ug/post/using-sql-views-with-entity-framework-code-first
更新
我找到了问题,但仍然没有解决方案。问题是实体集注册为MyDataDTO,而返回值为MyDBView。
但我仍然不知道解决方案。
【问题讨论】:
-
您想以 GET 还是 POST 的形式访问它?