0

我正在使用 IncludeMany 和 Reference 属性来获取包含相关列表的表。我的代码看起来有点像这样,它可以工作。

[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();
        foreach(var person in people)            
        {
            person.Addresses = person.Addresses.Where(x => x.Status == AddressStatus.Active).ToList();
        }
        return people;
    }

我的问题是,我怎样才能使这项工作,以便我过滤数据库上的地址?我想删除 foreach 外观,以便NPoco查询仅从数据库中带回过滤后的数据。另外,如果可能的话,我想避免使用内联 SQL

4

0 回答 0