Мне нужно переписать этот метод для использования параметризованных запросов в NHibernate:
static public int GetDomainId(string domainName)
{
string hql = string.Format("select domain.{0} from {2} domain where {1}='{3}'", RO_ID, DOM_NM, "DOMAIN", domainName);
using (NHibernate.ISession session = NHibernate.NHibernateHelper.GetCurrentSession())
{
NHibernate.IQuery query = session.CreateQuery(hql);
IList<int> ids = query.List<int>();
if (ids.Count == 1)
{
return ids[0];
}
}
return 0;
}
Я обновил метод, чтобы использовать следующие параметры:
static public int GetDomainRoId1(string domainName)
{
string hql = "select domain.:param1 from DOMAIN domain where :param2=:param3";
using (NHibernate.ISession session = NHibernate.NHibernateHelper.GetCurrentSession())
{
NHibernate.IQuery query = session.CreateSQLQuery(hql)
.SetParameter("param1", DOM_RO_ID)
.SetParameter("param2", DOM_DOM_NM)
.SetString("param3", domainName)
.ExecuteUpdate();
IList<int> ids = query.List<int>();
if (ids.Count == 1)
{
return ids[0];
}
}
return 0;
}
Но это бросаетошибка в коде: «Не удается неявно преобразовать тип int в« NHibernate.IQuery »»
Может кто-нибудь помочь мне исправить это? Но также укажите мне руководство, чтобы лучше понять, как работает NHibernate.