C# nHibernate返回不使用Id字段的单个对象(使用nHibernate 2.0)
我想使用guid返回一个sngle对象(它不是主键,但它是唯一的) 我可以通过以下方式使用id返回单个对象:C# nHibernate返回不使用Id字段的单个对象(使用nHibernate 2.0),c#,nhibernate,C#,Nhibernate,我想使用guid返回一个sngle对象(它不是主键,但它是唯一的) 我可以通过以下方式使用id返回单个对象: public User GetUserById(Int32 userId) { User user = null; using (ITransaction tx = _session.BeginTransaction()) { try { user = _session.Get<User>(use
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;
}
感谢您的建议UniqueResult
user=session.Linq();
我想指出,您不需要CreateQuery中的“选择”。请看我的答案(已编辑)。我还在精彩的NHibernate.linqAPI中包含了一个示例。
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;
}
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;
}
user = session.Linq<User>().Where(u => u.UserGuid == guid).SingleOrDefault();