Запрос в Nhibernate - PullRequest
       3

Запрос в Nhibernate

2 голосов
/ 16 февраля 2011

Я создаю приложение winform, в котором я использую Nhibernate.В моем приложении мне нужно выбрать все продукты в моей базе данных (74000 строк).

В моем объекте продукта у меня есть список объектов, называемый штрих-кодами.

Я хочу выбрать все свои продуктыно список штрих-кодов на earch product должен заполняться только объектами, если barcodetype = 20 и groupid = 4

Я не знаю, как написать этот запрос, я пытался с независимыми критериями, но яне могу заставить его работать.Кто-нибудь может мне помочь в написании запроса или со ссылкой на страницу, где я вижу, как это делается?

Ответы [ 3 ]

3 голосов
/ 17 февраля 2011

Поскольку коллекция не может быть «наполовину загружена», вам необходим проекция.

Вот как обычно I делает это:

var result = session.CreateQuery(@"
    select product, barcode
    from Product product
    join product.Barcodes barcode
    where barcode.Barcodetype = 20
    and barcode.Groupid = 4
    ")
    .List<object[]>()
    .ToLookup(x => (Product)x[0], x => (Barcode)x[1]);

(Я предполагал, что у вас есть скалярные свойства, называемые Barcodetype и Groupid, поскольку вы не указали никаких отношений и что все продукты имеют хотя бы один штрих-код этого типа)

0 голосов
/ 01 марта 2011

Я нашел ответ, я сделал это с помощью внешнего левого соединения crit.CreateCriteria ("штрих-коды", "bc", SqlCommand.JoinType.LeftOuterJoin) .Add (Expression.Or (Expression.Eq ("bc.Groupid", CType (cbBarcodeGroup.SelectedItem, Domain.Barcodegroup) .ID, Expression). .IsNull ( "bc.Groupid")))

0 голосов
/ 17 февраля 2011

Вместо того, чтобы создавать экземпляры всех объектов Product и подмножество их штрих-кодов, как насчет использования критериев для штрих-кода, фильтрации по указанному типу / группе и присоединения к родительскому продукту.

Затем используйте AliasToBeanResultTransformer для заполнениясписок простых объектов DTO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...