Проблема с Nhibernate ProjectionList - PullRequest
0 голосов
/ 23 мая 2011

У меня проблема со списком проекций Nhibernate, Он постоянно говорит, что не может найти установщик для свойства 'Commname' в классе 'Label6.Domain.Product' или не может разрешить свойство "pl.commname" свойство «имя_компонента» входит в состав объекта productslangs.

Мой объект продукта выглядит так:

  Public Overridable Property Latinname() As System.String
            Get
                Return _Latinname
            End Get
            Set(ByVal value As System.String)
                _Latinname = value
            End Set
        End Property
    Public Overridable Property Latinname2() As System.String
        Get
            Return _Latinname2
        End Get
        Set(ByVal value As System.String)
            _Latinname2 = value
        End Set
    End Property

    Public Overridable Property productslangs() As IList(Of Productslang)
        Get
            Return _productslangstrong text
        End Get
        Set(ByVal value As IList(Of Productslang))
            _productslangs = value
        End Set
    End Property

Мои критерии выглядят так

Dim crit As ICriteria = session.CreateCriteria(Of Product)()
                crit.Add(Expression.In(Projections.Property("ID"), aryIds))
                crit.CreateAlias("productslangs", "pl")
                crit.Add(Expression.Eq("pl.LangId", systemSettings.setting.langId))
                crit.SetFetchMode("Product.productslangs", FetchMode.Eager)
                crit.SetProjection(Projections.ProjectionList() _
                    .Add(Projections.Property("ID"), "ID") _
                .Add(Projections.Property("this.Latinname"), "Latinname") _
                .Add(Projections.Property("this.Matchcode"), "Matchcode") _
                .Add(Projections.Property("this.Price"), "Price") _
                .Add(Projections.Property("this.Productgroup"), "Productgroup") _
                .Add(Projections.Property("this.colorLookUp"), "colorLookUp") _
                .Add(Projections.Property("this.Productsubgroup"), "Productsubgroup") _
                .Add(Projections.Property("pl.Commname"), "Commname")
                )
                list = crit.SetResultTransformer(Transform.Transformers.AliasToBean(Of Product)).SetCacheable(True).List(Of Product)()

Кто-нибудь может сказать, что я делаю не так?

1 Ответ

0 голосов
/ 24 мая 2011

Проекция - это плоское представление ваших данных. Когда вы указываете свой AliasToBeanTransformer, он берет каждую строку, а затем сопоставляет все псевдонимы со свойствами указанного вами типа. Поскольку у продукта нет свойства Commname, он жалуется и выдает ошибки. Не уверен, что вы пытаетесь достичь, но обычно вам нужно создать класс DTO, который имеет все свойства, указанные в вашем списке проекций. Затем используйте его в качестве класса вашего компонента в спецификации AliasToBeanTransformer.

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