将列表关联到其他类MVC(LINQ?)

时间:2016-01-17 11:17:34

标签: c# asp.net-mvc linq

我有两个课程,课堂和课程表。课堂列表包括:

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

1 个答案:

答案 0 :(得分:0)

如果您使用的是Entity Framework,则必须使用Schedules属性将ClassroomClassrrom属性标记为导航属性。导航属性允许您从一个实体导航到“已连接”实体。

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>
                                    }

                            });