1

我想在内置的 NPoco 函数中使用连接而不是任何查询连接支持,例如:

var users = db.FetchOneToMany<UserDto, CarDto>(x => x.UserId, 
    "select u.*, c.* from Users u inner join Cars c on u.UserId = c.UserId order by u.UserId");

请任何人提供一些想法,如何使用 C# 在 NPoco 中使用 Joins。

4

1 回答 1

0

看一下这个例子,它有一个从 Person 到 Address 的一对多关系,即一个人可以有多个地址。您将IncludeManyReference属性结合使用。

[TableName("Person")]
[PrimaryKey("Id")]
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }

    [Reference(ReferenceType.Many, ColumnName = "Id", ReferenceMemberName = "PersonId")]
    public List<Address> Addresses { get; set; } = new List<Address>();
}

[TableName("Address")]
[PrimaryKey("Id")]
public class Address
{
    public int Id { get; set; }
    public int PersonId { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string Address3 { get; set; }
    public AddressStatus Status { get; set; }
}

这就是您检索所有人的方式,每个人都有一个地址列表。

    public async Task<People[]> GetPeople()
    {
        var query = _database.QueryAsync<People>()
            .IncludeMany(s => s.Address);
        var people = await query.ToArray();
        return people;
    }

要将其提升到一个新的水平,您可能需要根据地址或其他内容过滤掉地址。Status

于 2021-09-10T14:53:41.937 回答