我知道这个标题可能听起来很糟糕,但这是我能想到的最好的标题。 (也是我的第一个问题: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 个 SQL 表“orders”和“locations”,带有外键“LocationId”
如果我尝试使用 LINQ 进行选择,如下所示:
var ordersResult = await _context.Orders.Where(o => <some condition>).ToListAsync();
然后它将用所有属性填充我的对象,但 Location 对象属性除外,该属性将为 null。这是有道理的,因为我没有加入或类似的事情。
我不知道如何编写 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 属性一个空值。
使用包含
await _context.Orders.Include("Location").Where(o => <some condition>).ToListAsync();