gpt4 book ai didi

entity-framework - Web API OData $expand 不返回复杂类型

转载 作者:行者123 更新时间:2023-12-01 16:24:52 27 4
gpt4 key购买 nike

域模型:

public class Course
{
public int CourseId { get; set; }
public virtual ICollection<TeeSet> TeeSets { get; set; }
}
public class TeeSet
{
public int TeeSetId { get; set; }
public int CourseId { get; set; }
public CourseRating MensRating { get; set; }
}

当类(class)扩展为包含 TeeSet 时,以下查询不包含 CourseRating 复杂类型。
获取/api/courses?$expand=TeeSets

public class CoursesController : ApiController
{
[Queryable]
public IQueryable<Course> Get()
{
return _uow.Courses.GetAll();
}
}

JSON序列化结果不包含MensRating复杂类型(CourseRating):

[
{
"teeSets": [
{
"teeSetId": 1,
"courseId": 7
},
{
"teeSetId": 2,
"courseId": 7
}
],
"courseId": 7,
}
]

但是,对 DbContext 的快速测试会在 TeeSets 上返回 CourseRating 复杂类型,就像我所期望的那样:

[TestMethod]
public void Get_Course_With_TeeSets()
{
using (CoursesContext ctx = new CoursesContext())
{
var courses = ctx.Courses.Where(x => x.CourseId == 7).Include(x => x.TeeSets).FirstOrDefault();
}
}

使用 Entity Framework 6 和 Web API 2。

最佳答案

您也应该像这样扩展 MensRatingGET/api/courses?$expand=TeeSets/MensRating

当我们构建隐式 EDM 模型以通过 ApiController 支持 QueryableAttribute 时,我们将每种类型视为实体类型,以绕过复杂类型无法引用的 OData V3 限制到实体类型。而且,这意味着您必须显式扩展每个非原始类型。

关于entity-framework - Web API OData $expand 不返回复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20137681/

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