我不想使用.include来获取整个子表。我只需要选择列即可。
public class ProjectTypeDTO {
public string Type { get; set; }
}
public class CourseDTO {
public string CourseCode { get; set; }
public string CourseTitle { get; set; }
}
public class ProjectDTO {
public int Id { get; set; }
public ProjectTypeDTO ProjectType { get; set; }
public CourseDTO Course { get; set; }
public string StartTerm { get; set; }
public DateTime SignOff { get; set; }
public DateTime StartDateTime { get; set; }
}
[HttpGet("getallprojects")]
public IActionResult GetAllProjects()
{
var projects = _context.Projects
.Select(p => new ProjectDTO
{
Id = p.Id,
ProjectType = { Type = p.ProjectType.Type },
Course = { CourseCode = p.Course.CourseCode, CourseTitle = p.Course.CourseTitle },
StartTerm = p.StartTerm,
SignOff = p.SignOff,
StartDateTime = p.StartDateTime,
}).ToList();
return Ok(projects);
}
这将引发“ NotImplementedException:方法或操作未实现。”错误。
我已经将其测试为匿名函数,并且可以正常工作。
var projects = _context.Projects
.Select(p => new
{
p.Id,
p.ProjectType.Type,
p.SignOff,
p.StartDateTime,
p.Course.CourseCode,
p.Course.CourseTitle,
p.StartTerm
}).ToList();
匿名类型不适用于我的应用程序,因为我需要能够对此数据进行更改,然后才能将其返回。
根据我在这里看到的其他示例以及其他站点,这看起来是正确的。可能是错误吗?
答案 0 :(得分:2)
我以前没有看过子对象的语法。例如:
ProjectType = { Type = p.ProjectType.Type }
我认为应该是:
ProjectType = new ProjectTypeDTO{ Type = p.ProjectType.Type }