gpt4 book ai didi

asp.net-web-api - Odata查询不会扩展

转载 作者:行者123 更新时间:2023-12-02 18:13:22 25 4
gpt4 key购买 nike

我正在使用如下网址查询我的服务:

http://a.com:3080/odata/DiscussionVM(6) ?$expand=部分,用户

在 Controller 方法上:

[EnableQuery(MaxExpansionDepth = 7)]
public SingleResult<DiscussionVM> GetDiscussionVM([FromODataUri] int key)
{
return SingleResult.Create(db.DiscussionVMs.Where(discussionVM => discussionVM.DiscussionId == key));
}

这可以工作并返回正确的 JSON。

但是,我随后在不同的模型上运行稍微更高级的查询:

http://a.com:3080/odata/OrganisationVM(30)?& $expand=类别($expand=讨论($expand=部分,用户))

和 Controller 操作:

// GET: odata/OrganisationVM(5)
[EnableQuery(MaxExpansionDepth = 5, AllowedQueryOptions = AllowedQueryOptions.All)]
public SingleResult<OrganisationVM> Get([FromODataUri] int key)
{
return SingleResult.Create(db.OrganisationVMs.Where(organisationVM => organisationVM.OrganisationId == key));
}

这将返回以下 DiscussionVM JSON:

{
@odata.type: "#Models.DiscussionVM",
DiscussionId: 6,
Section_SectionID: 1005,
User_Id: "4cecc52e-ac3a-4696-ac6c-175af2a6378a",
DateCreated: "2014-12-06T00:00:00Z",
OrgCat_OrganisationCategoryId: 1,
Text: "Dummy section",
Html: null,
IsUserCreated: true,
Organisation_OrganisationId: null,
Positives: null,
Negatives: null,
CommentCount: 1
}

但不包含UserSection对象。不会抛出任何错误。在数据库中查询(分析)正确的对象,并返回包括用户和部分的数据。

最佳答案

我发现 oData 需要在其 Edm 模型中引用扩展实体。如果不是,它将在第一级之后停止扩展,这就是为什么进一步扩展将不起作用。

只需将可扩展的 EntitySet 添加到 IEdmModel 中的 ODataConventionModelBuilder(在 MapODataServiceRoute 的模型配置中):

var builder = new ODataConventionModelBuilder();
// ...
builder.EntitySet<Categories>("categories");
// ...

希望这有帮助。

关于asp.net-web-api - Odata查询不会扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27367813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com