Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(196评价)
价格: 4039.00元
session.CreateCriteria 问题
hmfcool发起了问答2017-07-18
2
回复
383
浏览

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哪来的

所有回复
  • hmfcool 2017-07-18

    我是Role下int类型的Useid 和 User下int类型的Id 外键关联的

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-07-18

    查询没问题,只是最后不能调用这个UniqueResult<List<Role>>();

    调用UniqueResult表示只取一行了,使用别的可以返回集合的方法

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!