3

我对 PetaPoco 很熟悉(顺便说一句,它看起来很棒),但这里有一个拦截器,我很好奇我是否可以在 PetaPoco 中做到这一点。

我想做的是将数据库中的一行映射到一个复合对象中。我认为这个例子会让事情变得清晰。

假设我们在数据库中有一个名为“Customers”的表,行看起来像这样:

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 实现这样的映射吗?

4

1 回答 1

2

是的,你可以,它很简单:

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中有关该和其他多重映射的更多信息

于 2012-04-19T16:04:27.790 回答