2015-04-15 4 views
1

У меня есть следующие связанные объекты POCO, сохраненные в SQLite.Автозаполнение различных результатов с соответствующими записями

public class Customer 
{ 
    [PrimaryKey] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    [Reference] 
    public List<Order> CustomerOrders { get; set; } 
} 

public class Order 
{ 
    [PrimaryKey] 
    public int Id { get; set; } 
    public int CustomerId { get; set; } 
    public string Type { get; set; } 
    public int Qty { get; set; } 
} 

Используя следующую AutoQuery с внутренним соединением

public class AutoQueryRequest : QueryBase<Customer>, IJoin<Customer, Order> 
{ 
} 

Если у меня есть 1 запись клиента с 3 связанных записей заказа, внутреннее соединение запрос возвращает 3 записи Клиента (как и ожидалось). Поскольку Заказы уже включены в объект Customer, как я могу заставить AutoQuery возвращать только отдельные записи Клиента (в этом случае 1)?

ответ

1

Вам не нужно зарегистрироваться на столе для того, чтобы загрузить OrmLite POCO Ссылки, как они загружаются автоматически, так что ваш AutoQuery Service просто нужно создать запрос родителя клиента POCO, например:

public class QueryCustomers : QueryBase<Customer> {} 
+0

Спасибо за быстрый ответ. Я попытался использовать запрос для Клиентов, но не смог найти поля в Заказе. Например, если бы я хотел получить все записи Клиента (со связанными ордерами), у которых есть ордеры с типами «А», «В» и «С», я попытался использовать/QueryCustomers? CustomerOrderTypes = A, B, C, но это не так, т работы. Должен ли я использовать любую пользовательскую реализацию AutoQuery? – nivjen

+0

@nivjen Нет, что не позволило бы вам запросить заказы, вам понадобится пользовательская реализация AutoQuery. – mythz

+0

Спасибо за разъяснение. В таком случае мне нужно использовать внутреннее соединение между объектами Customer и Order? Любые указатели на пример/документацию были бы замечательными! – nivjen

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