2012-03-12 63 views
1

有2個波蘇斯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是否知道如何處理含有其他Poco的Pocos?

我知道實驗性的多波科查詢,但他們看起來相當複雜,並不完全是我想要的。

回答

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 2012-03-13 09:21:22

+1

這是正確的,所以你需要刪除「作爲Producer_Id」。當結果序列中的下一列名稱與當前的poco不匹配時,PetaPoco將轉到下一個poco T.你可以用你的poco屬性的[Column]屬性覆蓋它:http://www.toptensoftware.com/Articles/75/PetaPoco-Named-Columns-Result-Columns-and-int-long-conversion – 2012-03-13 10:01:50