この質問に対する受け入れられた回答を使用して、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 と射影を使用して連結を行う以外に他の方法があるかどうかです。