Может ли Peta Poco сопоставляться со сложными типами?

Имея 2 поко

 public class ProductInfoModel
{
    public int Id { get; set; }
    public string Name { get; set; }        
    public ItemInfo Producer { get; set; }
}

public class ItemInfo
{
    public int Id {get;set;}
    public string Name {get;set;}
}

Могу ли я сделать что-то подобное?

var result=db.Query<ProductInfoModel>("select p.Id,p.Name,pr.Id as Producer_Id, pr.Name as Producer_Name from products p inner join producers pr on pr.Id=p.ProducerId")

По сути, знает ли PetaPoco, что делать с Poco, содержащими другие Poco?

Я знаю об экспериментальных запросах Multi-Poco, но они кажутся мне довольно сложными и не совсем тем, что мне нужно.


person MikeSW    schedule 12.03.2012    source источник


Ответы (2)


Я считаю, что все, что вам нужно сделать, это добавить второй тип (ItemInfo):

var result=db.Query<ProductInfoModel, ItemInfo>(
     "select p.Id,p.Name,pr.Id as Producer_Id, pr.Name as Producer_Name from products " +
     "p inner join producers pr on pr.Id=p.ProducerId");
person Typo Johnson    schedule 12.03.2012
comment
Он выдает исключение о точке разделения. Кажется, что имена столбцов для вложенного poco должны быть такими же, как и его свойства, без намека на тип. - person MikeSW; 13.03.2012
comment
Это правильно, поэтому вам нужно удалить as Producer_Id. PetaPoco перейдет к следующему poco T, если имя следующего столбца в результирующей последовательности не соответствует текущему poco. Вы можете переопределить это с помощью атрибута [Column] в свойствах вашего poco: toptensoftware.com/Articles/75/ - person Typo Johnson; 13.03.2012

Однако это работает, но нет поддержки разбиения на страницы

var result=db.Query<ProductInfoModel,ItemInfo>(
 @"select p.Id,p.Name,pr.Id , pr.Name 
     from products p inner join producers pr on pr.Id=p.ProducerId")
person MikeSW    schedule 13.03.2012