4

この質問に対する受け入れられた回答を使用して、ICriteria と予測を使用して 2 つのフィールドを連結することができました。私はで終わった

return session.CreateCriteria<Contact>()
                .CreateAlias("USState","USState", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
                .SetProjection(Projections.ProjectionList()
                     .Add(Projections.Property<Contact>(x=>x.Id), "Id")
                     .Add(Projections.SqlFunction("concat", 
                            NHibernateUtil.String,
                            Projections.Property<Contact>(x=>x.BasicInfo.FirstName),
                            Projections.Constant(' '),
                            Projections.Property<Contact>(x=>x.BasicInfo.LastName)),"Name")
                     .Add(Projections.Property<Contact>(x=>x.BasicInfo.City),"City")
                     .Add(Projections.Property<Contact>(x=>x.USState.Name) ,"State"))
                .Add(Restrictions.Where<Contact>(x => x.Pack == false))
                .AddOrder(new Order(Projections.Property<Contact>(x => x.BasicInfo.FirstName), true))
                .AddOrder(new Order(Projections.Property<Contact>(x => x.BasicInfo.LastName), true))
                .SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean<ContactsViewModel>())
                .List<ContactsViewModel>();

これは予想されるクエリをサーバーに送信しており、機能しています。

私の質問は、SqlFunction を使用して ICriteria と射影を使用して連結を行う以外に他の方法があるかどうかです。

4

0 に答える 0