2014-10-05 10 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

На самом деле у меня есть объект клиента со списком заказов (свойство). Я смог выполнить эту работу, добавив заказ в список, а не назначая. –

Смежные вопросы