我正在使用实体框架制作一个UWP应用程序,以及关于学生和课程的WebApi。我的学生和课程之间有很多很多关系。我试图在数据库表中路由一个将学生和他们的课程结合起来的动作。我想获取有关学生的信息以及他们注册的课程名称。
这是我的错误消息:
' ObjectContent`1'类型无法序列化内容类型' application / xml的响应正文;字符集= UTF-8'
这是我的自定义控制器文件中的自定义路由。
StudentsCoursesController
public class StudentsCoursesController : ApiController
{
private DataContext db = new DataContext();
//GET: api/Students/Courses
[HttpGet]
[Route("api/Students/Courses")]
[ResponseType(typeof(Students[]))]
public IHttpActionResult GetstudentsCourse()
{
var Student = from st in db.Students.Include("Courses")
select new { st.Id, st.FirstName, st.LastName, st.Courses };
return Ok(Student);
}
}
这是DataContext构造函数:
的DataContext:
public DataContext() : base("Database")
{
Configuration.ProxyCreationEnabled = false;
Configuration.LazyLoadingEnabled = false;
Database.SetInitializer(new LibraryDBInitializer());
}
以下是我在Web Api中收到的错误消息:
我的代码中没有出现任何错误,但我也没有得到任何结果。 什么想法可能是错的?我感觉错误在我的API代码(控制器)中。
答案 0 :(得分:0)
您应该将LINQ查询转换为数组 -
学生[]
答案 1 :(得分:0)
我想获取有关学生的信息,以及他们注册的课程名称。
如果您只想要课程名称,那么只选择课程名称
var Students = db.Students.Include("Courses").Select(st =>
new {
Id = st.Id,
FirstName = st.FirstName,
LastName = st.LastName,
Courses = st.Courses.Select(course => course.Name).ToArray()
}).ToArray();
答案 2 :(得分:0)
It is a Serialization problem.
As it is said in this answer you cannot serialize, by default, anonymous types to xml.
In your cliente, change the contente type to "application/json"