如何使第二级包括对象

时间:2012-10-04 16:55:45

标签: c# linq entity-framework windows-runtime

我有这样的结构

class Lesson {
    List<Sign> signs { get; set; }
}

class Sign {
    List<Media> media { get; set;}
}

class Media {

}

现在我正在使用这个LINQ来获取所有课程

var items = (from lesson in this.db.Lesson.Include("Sign")
                     where lesson.module_id == param
                     select lesson);

它工作正常但是标志列表有安培媒体列表。我的意思是每个对象media中的属性Sign等于null。我需要做什么才能为每个Sign包含媒体对象?整个数据保存在数据库中

1 个答案:

答案 0 :(得分:5)

您使用db.Lesson.Include("signs.media")

ObjectQuery<T>.Include的参数是属性 path ,而不仅仅是单个根属性。请注意,对于“signs.media”,您不需要另外包含“标志”:

  

路径包罗万象。例如,如果包含调用表示包含(“Orders.OrderLines”),则不仅包括OrderLines,还包括订单。

(顺便说一句,你应该调整你的属性名称以符合.NET框架约定,所以你最终会得到“Signs.Media”。)