2012-03-12 4 views
1

Имея 2 PocosCan Peta Poco подходит для сложных типов?

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, как бороться с Pocos, содержащим другие Poco?

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

ответ

0

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

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") 
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"); 
+0

Он бросает исключение о точке разделения. Кажется, что имена столбцов для вложенного poco должны быть такими же, как и его свойства, без намека на тип. – MikeSW

+1

Это правильно, поэтому вам нужно удалить «as Producer_Id». PetaPoco перейдет к следующему poco T, когда следующее имя столбца в последовательности результатов не соответствует текущему poco. Вы можете переопределить это с помощью атрибута [Столбец] в свойствах poco: http://www.toptensoftware.com/Articles/75/PetaPoco-Named-Columns-Result-Columns-and-int-long-conversion –

Смежные вопросы