2012-04-18 48 views
2

我熟悉PetaPoco(它看起來很棒btw),但在這裏有一個阻擋者,我很好奇我是否可以在PetaPoco中做到這一點。PetaPoco:獲取複合對象

我想要做的是將數據庫中的一行映射到複合對象。 我認爲這個例子會清除一切。

假設,我們在數據庫中的表稱爲「客戶」和行看起來somethins這樣的:

ID | Name  | City  | Street   | 
1 | John Doe | New York | Some Street Name | 

,我想用模型那樣:

public class Customer 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public Address Address { get; set; } 
} 

public class Address 
{ 
    public string City{ get; set; } 
    public string Street { get; set; } 
} 

所以我們必須在c#中有不同的對象,但它只是一個實體(一個Id,一個數據庫中的一行)。

我可以使用PetaPoco來實現這種映射嗎?

+1

上和其他multimappings信息聽起來像在墨西哥一座火山。我無法跟上所有這些帶有不斷增加的可愛名字的新技術 2012-04-18 10:16:01

+0

你在哪裏存儲地址數據?如果您將它存儲在數據庫中,爲什麼不使用地址的ID? – 2015-10-08 09:19:12

回答

1

是的,你可以,它是那樣簡單:

var customers = db.Fetch<customer, address>(@" 
     SELECT * FROM customers 
     LEFT JOIN adresses ON customers.customerID = adresses.customerID 
     ORDER BY customers.customerID 
     "); 

http://www.toptensoftware.com/blog/posts/115-PetaPoco-Mapping-One-to-Many-and-Many-to-One-Relationships

+1

您正在展示的解決方案是使用兩個表(標準關係編號)。我想在我的問題中實現的是兩個在數據庫中只有一個表和C#端的兩個對象(本例中的地址根本沒有標識)。謝謝! – Biegal 2012-04-20 12:21:17

+0

你有沒有得到這個工作? 我試圖達到相同的結果... – Jim 2014-12-17 05:29:29