是否可以访问Linq对象的父级?

时间:2014-03-04 22:34:06

标签: c# linq

在查询EntitySet的情况下(例如,多对多关系),是否可以访问父对象?

e.g

Thing thing = db.Things.First();
Widget widget = thing.Widgets.First();
// Let's assume that Widgets can have many things as well
// (i.e. widget.Things is possible)
widget.ParentThing // would return the same instance of thing used above

这可能吗?

1 个答案:

答案 0 :(得分:4)

  

是否可以访问父对象

对于多对多,确实没有“父” - 有多个相关的对象。多对多通常使用导航属性建模:

public class Thing
{
   public int ID {get; set;}
   public virtual IEnumerable<Widget> Widgets {get; set;}
}

public class Widget
{
   public int ID {get; set;}
   public virtual IEnumerable<Thing> Things {get; set;}
}

如果你的模型没有这样的属性,那么另一种方法是回到上下文(如果你不再有上下文,则回到数据库):

var relatedThings = db.Things
                      .Where(t => t.Widgets.Any(w => ID == widget.ID));