我有两个课程,课堂和课程表。课堂列表包括:
public class Classroom
{
public int ClassroomId { get; set; }
public string Name { get; set; }
public List<Schedule> Schedules { get; set; }
}
public class Schedule
{
public int ScheduleId { get; set; }
public string Entry { get; set; }
public string Exit { get; set; }
public string ClassroomId { get; set; }
public Classroom Classroom { get; set; }
}
然后我想在一个视图中显示与教室相关的所有日程安排。我想过使用LINQ,但是当我想要一个时间表列表而不仅仅是一个时间表时,我不知道如何使用它。 有人能帮我吗?或者告诉我其他方法吗? 谢谢
顺便说一句,我使用的是MVC 4,但我也可以使用MVC 5
答案 0 :(得分:0)
如果您使用的是Entity Framework,则必须使用Schedules
属性将Classroom
和Classrrom
属性标记为导航属性。导航属性允许您从一个实体导航到“已连接”实体。
在public virtual ICollection<Schedule> Schedules { get; set; }
实施中:
Schedule
在public virtual Classroom Classroom { get; set; }
实施中:
LazyLoading
如果您已手动禁用它,请启用var classroom = db.Classrooms.FirstOrDefault(x => x.ClassroomId == clasroomId); // fetch it from the database
var schedules = classroom.Schedules.ToList(); // It will fetch all schedules associated with that classroom
。
在此之后,您可以使用:
Include()
顺便说一下,在上一个方法中,您将向数据库发送两个不同的查询。如果您出于某种原因不想这样做,可以使用Schedules
方法热切地加载Join
。在这种情况下,var schedules = db.Classrooms
.Include(x => x.Schedules)
.FirstOrDefault(x => x.ClassroomId == clasroomId)
.Select(x => x.Schedules)
.ToList();
查询将被发送到数据库。
然后它将是:
'
Group group= new Group();
HBox hBox = new HBox();
ImageView image= new ImageView();
hBox.getChildren().add(image);
hBox.toFront();
group.getChildren().add(hBox);
image.setImage(ImageUtil.getImage("img.png"));
group.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
<if not collide with HBOX hide HBOX.>
}
});
box.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
<do other things without hidding HBOX.>
}
});
image.onMouseClickedProperty().set(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
<do something>
}
});