2012-04-18 45 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