nPoco-获取带有嵌套数据的单个对象

时间:2019-03-11 14:53:33

标签: c# orm repository-pattern npoco

我有两个Dto:

[TableName("Address")]
    public class AddressDto
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string City { get; set; }
        public string Street { get; set; }
        public string Building { get; set; }
        public string Appartment { get; set; }
        public string ZipCode { get; set; }
        public string Floor { get; set; }
        public DateTime CreatedDate { get; set; }
    }

[TableName("DistributionPoint")]
    public class DistributionPointDto
    {
        [Column("Id")]
        public int Id { get; set; }

        public string Name { get; set; }

        [Reference(ReferenceType.Foreign, ColumnName = "AddressId", ReferenceMemberName = "Id")]
        public AddressDto Address { get; set; }
    }

如何使用nPoco获取带有嵌套AddressDto的DistributionPointDto? 我有一个通用的CRUD存储库,方法是:

 public T FindById<T>(int id)
        {
           return _db.SingleById<T>(id);
        }

但是,当我尝试获取DistributionPointDto时,AddressDto为null

1 个答案:

答案 0 :(得分:0)

好奇你的代码是否可以工作,但我发现你需要使用 Query 而不是 SingleById 来包含引用的属性,然后你可以使用 Include 语句/子句,但是我不认为泛型可以使用对此,您必须明确提及所引用的属性名称,即 AddressDTO 给您。

_db.Query<DistributionPointDTO>()
  .Include(x => x.AddressDTO)
  .Where(x => x.Id == id).First();