2011. április 13., szerda

NHibernate Linq vs. Hql

Az ember azt várná el, hogy ha NHibernate-et használva egy query-t megírok Linq-val, és ugyanazt megírom Hql-ben, akkor ugyanazt az eredményt kellene kapnom amikor lefut.

Nem nagyon hiszem még el, de sajnos nem ez történt.
Történet:
Adott egy class, amiben van egy lista, amiben saját típusából van egy set (hierarchikus, vizsgálatnak vannak alvizsgálatai).
HBM rész:

Class-ban:
public IList SubRequestTypes
{

get { return _SubRequestTypes; }

set { _SubRequestTypes = value; }

}
Linq lekérdezés:
var result = from examType in _DataManager.Linq()
where examType.MWID == mwId
select examType;

HQL lekérdezés:
var queryString = new StringBuilder();
queryString.Append("select t from " + typeof(ChemicalLaborExaminationType).Name + " t "); queryString.Append("where t.MWID = :mwdId ");

var query = _DataManager.CreateQuery(queryString.ToString());
query.SetString("mwdId", mwId);

A ChemicalLaborExaminationType-ban levő ChemicalLaborExaminationType listába ha linq-val kérdezek le, akkor CSAK 1 elemet tölt bele, ha HQL lekérdezést futtatok, akkor mindegyiket betölti...
Miért???

Nincsenek megjegyzések:

Megjegyzés küldése