2014-10-05 36 views
1

我试图遵循Petapoco网站上的文档,尽可能没有运气。如何做Petapoco加入

我有一个Customer poco,我修改了List<Order> Orders {get; set;}。我想查询客户并在每个客户对象中包含相关订单。

using (var db = new Database("NorthWind")) 
    { 
     var sql = Sql.Builder 
      .Select("*") 
      .From("Customers customers") 
      .LeftJoin("Orders orders").On("customers.CustomerID = orders.CustomerID") 
      .OrderBy("customers.CustomerID"); 

     return db.Fetch<Customer, List<Order>, Customer>(
        (c, o) => { c.Orders = o; return c; }, sql); 
    } 

客户数据总是返回,但订单总是空的。思考?

回答

0

您的.LeftJoin好像您有没有客户的订单。为什么不使用.InnerJoin。通过使用(c, o) => { c.Orders = o; return c; },您正在将一个集合加入到一个我认为不可能的对象中。

语法修改你以下几点:

return db.Fetch<Customer, Order, Order>(
       (c, o) => { o.Customer = c; return o; }, sql); 

将返回订单及其相关客户。我假设你在订单对象中有一个客户属性。

+0

其实我有一个订单列表(属性)的客户对象。我能够通过将命令添加到列表而不是分配来完成这项工作。 – 2014-10-12 02:22:55