标题基本上是说我的问题,说我有这样的课程
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"}
有人知道我应该如何查询或配置它?
将您的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] 删除。
我来说两句