User user = session.CreateCriteria(typeof(User)).Add(Restrictions.Eq("Username", username)).UniqueResult<User>();
上面的代码是在服务器端通过username查找User
我现在在做泰斗破坏神,里面登陆后,要得到该账号下的所有角色
我应该怎么做。
public List<Role> GetRoleListByUser(User user)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
int Userid = user.Id;
List<Role> roles = session.CreateCriteria(typeof(List<Role>)).Add(Restrictions.Eq("Userid", Userid)).UniqueResult<List<Role>>();
transaction.Commit();
return roles;
}
}
}
上面是我写的,但肯定不对,因为Eq UniqueResult
但是思路应该对的,通过传过来的user得到user的Id。
然后用过userid在 Role里面查找包含userid的所有角色。 User的Id 和 Role的Userid是外键关联的
我查了好久,貌似可以Eq 改为AllEq 可是AllEq需要一个IDictionary
所以卡在这,求助。
泰斗破坏神教程里面是这样的
public List<Role> GetRoleListByUser(User user)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
var res = session.QueryOver<Role>().Where(role +> role.User == user);
return (List<Role>)res.List<Role>();
}
}
}
用的labmda表达式 我看不懂小写的role哪来的
我是Role下int类型的Useid 和 User下int类型的Id 外键关联的