linq 异步调用使用外键映射到一个对象 2 个表

问题描述 投票:0回答:1

我知道这个标题可能听起来很糟糕,但这是我能想到的最好的标题。 (也是我的第一个问题: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 属性一个空值。

c# asp.net linq
1个回答
1
投票

使用包含

await _context.Orders.Include("Location").Where(o => <some condition>).ToListAsync();
© www.soinside.com 2019 - 2024. All rights reserved.