实体框架 - 一对多 - 从两个表中选择

Moh*_*oon 3 c# entity-framework

在我的数据库中,我有“位置”和“图像”表。“图像”有一个来自 Place 的外键,这意味着每个地方可以有多个图像。

我选择这样的地方:

var query = (from x in DB.Places
  where x.CityId == CityId 
  select x).ToList();
Run Code Online (Sandbox Code Playgroud)

当我想通过以下方式访问其图像时:query.Images.toList();我收到此错误:

ObjectContext 实例已被释放,不能再用于需要连接的操作。


我的选择查询应该如何才能通过一个选择查询获得一个地方和它的图像?

在此先感谢
MA。

Ser*_*kiy 5

您可以使用预先加载:

var query = (from x in DB.Places
             where x.CityId == CityId 
             select x).Include(p => p.Images).ToList();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,方法语法看起来更好

var query = DB.Places.Where(p => p.CityId == CityId).Include(p => p.Images).ToList();
Run Code Online (Sandbox Code Playgroud)

另一种选择 - 在获得图像之前不要处理 DbContext。例如,如果您正在使用using语句,只需在using块内删除它或获取图像。但它将使用第二个数据库查询来加载图像。

进一步阅读:急切加载延迟加载