我有2个实体,学生和课程如下。
public class Student
{
[Key]
public int Student_Id{ get; set; }
[StringLength(100)]
public string FirstName { get; set; }
[StringLength(100)]
public string LastName { get; set; }
[StringLength(1)]
public string Gender { get; set; }
public ICollection<Course> courses{ get; set; }
}
public class Courses
{
[Key]
public int Course_Id{ get; set; }
public int Student_Id{ get; set; }
[StringLength(100)]
public string CourseName{ get; set; }
[StringLength(10)]
public string Duration { get; set; }
}
以下$ expand可以正常工作。
http://localhost:61565/Odata/Student?$select=Student_Id,FirstName &$expand=Courses($select=Course_Id,CourseName)
无论如何,我可以先扩展儿童实体“课程”,然后扩展父“学生” $ 即使我添加以下代码
public ICollection<Student> Students{ get; set; }
参加课程。使用$ expand选项时会抛出错误。
有什么办法可以在父实体集和子实体集上双向设置导航属性,或以其他任何方式来处理它?</ p>
答案 0 :(得分:0)
您很对,课程类应该包含学生的ICollection。 我认为网址应该是这样的:
http://localhost:61565/Odata/Student
?$select=Student_Id,FirstName
&$expand=Courses(
$select=Course_Id,CourseName;
$expand=Students(
$select=Student_Id,FirstName))
以下是实时OData端点上的示例:
https://demos.telerik.com/kendo-ui/service-v4/odata/Categories
?$top=20
&$select=CategoryName
&$expand=Products(
$select=ProductName,Category;
$expand=Category(
$select=CategoryName))
您遇到什么错误?
答案 1 :(得分:0)
要双向访问,请在以下课程中为Student_id添加ForiegnKey。
public class Courses
{
[Key]
public int Course_Id{ get; set; }
[ForeignKey("Student")]
public int Student_Id{ get; set; }
[StringLength(100)]
public string CourseName{ get; set; }
[StringLength(10)]
public string Duration { get; set; }
public virtual Student Student{ get; set;}
}