【发布时间】:2019-03-06 21:52:24
【问题描述】:
我知道这个标题可能听起来很糟糕,但这是我能想到的最好的。 (也是我在堆栈上的第一个问题:P)
我已经对数据库进行了逆向工程,并且我有一些如下所示的类:
public class Orders
{
public int Id { get; set; }
public int LocationId { get; set; }
...
public Locations Location { get; set; }
public Users User { get; set; }
}
public class Locations
{
public int Id { get; set; }
...
}
我还有 2 个带有外键“LocationId”的 SQL 表“订单”和“位置”
如果我想像这样使用 LINQ 进行选择:
var ordersResult = await _context.Orders.Where(o => <some condition>).ToListAsync();
然后它将用所有属性填充我的对象,但 Location 对象属性将为空。这是有道理的,因为我没有加入或类似的事情。
我不知道如何编写 LINQ 语句,以便它只在一次异步调用中填充整个对象,而无需多次调用数据库。
我也试过这样做:
var ordersResult = await _context.Orders.Join(_context.Locations,
orders => orders.LocationId,
locations=> locations.Id,
(orders, locations) => new { Orders = orders, Locations = locations })
.Where(orders_users => <some condition>)
.Select(o => o.Orders)
.ToListAsync();
但这仍然给我的 Locations 属性一个空值。
提前感谢您的帮助!
【问题讨论】: