如何在ASP.NET Core的OData中导航/配置从复杂类型到实体类型的导航?

用户名

标题基本上是说我的问题,说我有这样的课程

public class ContrivedComplexClass
{
    public string stringy { get; set; }
    public ContrivedEntityClass ContrivedEntityClass { get; set; }
}

public class ContrivedEntityClass
{
    public Guid Id { get; set; }
    public int inty { get; set; }
}

我的控制器动作是这样的

[HttpGet]
[ODataRoute("GetContrivedComplexClass()")]
public async virtual Task<ContrivedComplexClass> GetContrivedComplexClass()
{
     await Task.Delay(10);
     ContrivedComplexClass contrivedComplexClass = new ContrivedComplexClass() { stringy = "asdf", ContrivedEntityClass = new ContrivedEntityClass() { Id = Guid.NewGuid(), inty = 3 } };
     return contrivedComplexClass;
}

我的edm模型配置如下

var builder = new ODataConventionModelBuilder(serviceProvider);
builder.EntitySet<ContrivedEntityClass>("ContrivedEntityClass").EntityType.HasKey(f => f.Id);
builder.Function("GetContrivedComplexClass").Returns<ContrivedComplexClass>();

当我从浏览器或邮递员或其他带有URL的函数调用时

https://localhost:5001/odata/GetContrivedComplexClass()?Expand=ContrivedEntityClass

它只返回复杂类型的属性,例如

{"@odata.context":"https://localhost:5001/odata/$metadata#WebPortal.ContrivedComplexClass","stringy":"asdf"}

有人知道我应该如何查询或配置它?

mj1313

将您的EDM模型配置为:

private static IEdmModel GetEdmModel()
{​​​​
    var builder = new ODataConventionModelBuilder();
    builder.EntitySet<ContrivedEntityClass>("ContrivedEntityClass").EntityType.HasKey(f => f.Id); ;
    var function = builder.Function("GetContrivedComplexClass");
    function.ReturnsFromEntitySet<ContrivedComplexClass>("GetContrivedComplexClass");
    return builder.GetEdmModel();
}​​​​

将一个密钥添加到ContrivedComplexClass:

public class ContrivedComplexClass
{​​​​
    [Key]
    public int Id {​​​​ get; set; }​​​​
    public string stringy {​​​​ get; set; }​​​​
    public ContrivedEntityClass ContrivedEntityClass {​​​​ get; set; }​​​​
}​​​​



public class ContrivedEntityClass
{​​​​
    public Guid Id {​​​​ get; set; }​​​​
    public int inty {​​​​ get; set; }​​​​
}​​​​

附带网址:

https://localhost:5001/odata/GetContrivedComplexClass()?$Expand=ContrivedEntityClass

控制器:

[HttpGet]
[ODataRoute("GetContrivedComplexClass()")]
public async virtual Task<ContrivedComplexClass> GetContrivedComplexClass()
{​​​​
    await Task.Delay(3);
    ContrivedComplexClass contrivedComplexClass = new ContrivedComplexClass
    {​​​​
        Id = 1,
        stringy = "asdf",
        ContrivedEntityClass = new ContrivedEntityClass()
        {​​​​
            Id = Guid.NewGuid(),
            inty = 3
        }​​​​
    }​​​​;
    return contrivedComplexClass;
}​​​​

结果:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET Core - 无法跟踪实体类型的实例

来自分类Dev

如何在Blazor应用程序中导航到ASP.NET Core MVC控制器?

来自分类Dev

ASP.NET Core:从jQuery发布复杂类型始终导致“空”模型

来自分类Dev

ASP.NET Core:从jQuery发布复杂类型始终导致“空”模型

来自分类Dev

如何在asp.net core中配置依赖

来自分类Dev

如何在ASP.NET 5中注册OData

来自分类Dev

如何在实体索引中包含复杂类型?

来自分类Dev

如何在ASP.NET MVC中配置HTML压缩

来自分类Dev

如何在asp.net中配置数据列表的索引?

来自分类Dev

如何在ASP.NET MVC中配置AutoMapper属性

来自分类Dev

如何在Asp.net Core中缓存资源?

来自分类Dev

如何在IIS下运行ASP.NET Core站点

来自分类Dev

如何在ASP.NET Core应用中使用HttpClient

来自分类Dev

如何在ASP.NET Core中使用jquery

来自分类Dev

如何在ASP.NET Core中设置cookie validateInterval?

来自分类Dev

如何在ASP.NET Core中移动凉亭库?

来自分类Dev

如何在ASP .NET Core中创建Azure AD用户?

来自分类Dev

如何在ASP.NET Core中获取IIS版本

来自分类Dev

如何在ASP.NET Core 3.0中调用UseWebRoot

来自分类Dev

如何在ASP .NET Core 3.1中设置请求超时

来自分类Dev

如何在ASP.NET Core Controller上允许/(斜杠)?

来自分类Dev

如何在ASP.NET Core中进行条件路由?

来自分类Dev

如何在ASP.NET Core中设置默认区域?

来自分类Dev

如何在ASP .NET Core中创建Azure AD用户?

来自分类Dev

如何在IIS下运行ASP.NET Core站点

来自分类Dev

如何在ASP.NET Core中进行异常处理?

来自分类Dev

如何在asp.net core的后端构建表单?

来自分类Dev

如何在 asp.net core 中创建类扩展?

来自分类Dev

maxReceivedMessageSize 如何在 Asp.net Core Api 中设置?

Related 相关文章

热门标签

归档