nHibernate возвращает один объект, не используя поле Id (используя nHibernate 2.0) - PullRequest
0 голосов
/ 12 августа 2010

Я хочу вернуть объект sngle с помощью guid (это не первичный ключ, но он уникален)

Я могу вернуть один объект с помощью идентификатора:

public User GetUserById(Int32 userId)
{
    User user = null;
    using (ITransaction tx = _session.BeginTransaction())
    {
        try
        {
            user = _session.Get<User>(userId);
            tx.Commit();
        } 
        catch (NHibernate.HibernateException) 
        {
            tx.Rollback();
           throw;
        }
    }
    return user;
}

Но хотите выполнить повторную настройку с помощью guid, но, похоже, не можете этого сделать:

public User GetUserByGuId(Int32 guid) 
{
    User user = null;
    using (ITransaction tx = _session.BeginTransaction()) 
    {
        try 
        {
            user = _session.CreateQuery("select from User u where u.UserGuid =:guid")
                   .SetString("guid", guid)
                   .???? 
            tx.Commit();
        } 
        catch (NHibernate.HibernateException) 
        {
            tx.Rollback();
           throw;
        }
    }
    return user;
}

Спасибо за продвинутый

1 Ответ

2 голосов
/ 12 августа 2010

. UniqueResult () ;

Также используйте SetParameter () вместо SetString ().

public User GetUserByGuId(Int32 guid) 
{
    User user = null;
    using (ITransaction tx = _session.BeginTransaction()) 
    {
        try 
        {
            user = _session.CreateQuery("from User u where u.UserGuid =:guid")
            .SetParameter("guid", guid)
            .UniqueResult<User>();
            tx.Commit();
        } 
        catch (NHibernate.HibernateException) 
        {
            tx.Rollback();
            throw;
        }
    }
    return user;
} 

Использование NHibernate.Linq :

user = session.Linq<User>().Where(u => u.UserGuid == guid).SingleOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...