当前位置:编程学习 > C#/ASP.NET >>

NHibernate多对多映射关系怎么不出来啊

我有两个表 User 和RoLe

User表

public class User
    {
        public virtual string Account { get; set; }

        public virtual string Password { get; set; }

        public virtual string Name { get; set; }

        public virtual int Sex { get; set; }

        public virtual int Age { get; set; }

        public virtual DateTime Birthday { get; set; }

        public virtual string Telphone { get; set; }
        
         public virtual IList<Role> Roles { get; set; }

}
Role表

 public class Role
    {
        public virtual string Number { get; set; }

        public virtual string RoleName { get; set; }

        public virtual string Remark { get; set; }

         public virtual IList<User> Users { get; set;}
}

他们中间的表

RoleMember
{
public  class RoleMember
    {
        public virtual string UserNumber { get; set; }

        public virtual string RoleNumber { get; set; }
    }

}

映射文件


 <!--  用户 -->
  <class name ="SCYZ.Domain.User.User,SCYZ.DLL" table="t_b_user">
    <id name="Account" column="FUSERNUMBER">
    </id>
    <property name ="Name" column="FNAME"/>
    <property name ="Password" column="FPASSWORD"/>
    <property name ="Sex" column="FSEX"/>
    <property name ="Age" column="FAGE"/>
    <property name="Birthday" column="FBIRTHDAY"/>
    <property name ="Telphone" column="FTELPHONE"/>
    <bag name="Roles" table="T_ROLEMEMBER"  cascade="all">
      <key column="FUSERNUMBER"/>
      <many-to-many class="SCYZ.Domain.User.Role,SCYZ.DLL" column="FROLENUMBER"/>
    </bag>
  </class>

  <!-- 角色 -->
  <class name="SCYZ.Domain.User.Role,SCYZ.DLL" table="t_b_role">
    <id name="Number" column="FROLENUMBER">
    </id>
    <property name="RoleName" column="FROLENAME" />
    <property name="Remark" column="FREMARK" />
    <bag name="Users" table="T_ROLEMEMBER"  cascade="all">
      <key column="FROLENUMBER"/>
      <many-to-many class="SCYZ.Domain.User.User,SCYZ.DLL" column="FUSERNUMBER"/>
    </bag>
  </class>

映射好了怎么没结果出来啊 查询的时候不报错 但是也不显示结果啊 那位大神教教我啊 新手 --------------------编程问答-------------------- 查询语句是这样写的   public Role GetByNumber(string Number)
        {
            using (ISession session = GetSession())
            {
                Role role = session.CreateCriteria(typeof(Role))
                            .Add(Restrictions.Eq("Number", Number))
                            .UniqueResult<Role>();

                return role;
            }
        }  有不有大神啊 --------------------编程问答-------------------- 这个很久没弄过了,映像有点模糊。记得以前
 <property name ="Name" column="FNAME"/>
这种一般为了防止出错都会写成一致的。
使用这个框架的确定就是调试起来很麻烦。但是问题一般都会出现在配置文件里的。你仔细核对下 --------------------编程问答-------------------- 都对好了啊 查询起来不报错啊 但是也没有数据显示 --------------------编程问答-------------------- 调试的时候拿不到数据么? --------------------编程问答-------------------- var query = this.Session.CreateQuery( 
    @"from Person as a inner join a.PersonSecrets as b with b.User.Id = :userId and b.RemindeBirthday = :remind"); --------------------编程问答-------------------- 是啊 我要用查询一个Role下面的很多用户 但是我查出role表里面的别的数据都出来了 就是Users集合是null 是没映射好 还是查询语句有问题啊  大神只条明路... --------------------编程问答-------------------- 从几个方面去检查下。这里只看到两个表的映射,中间表有映射没?
再则就是看看他们的对应关系是否正确,是一对多一对一还是多对多。。
然后还要看看你是否正确的取值了?实在是太久没用过这个框架了。差不多都快忘记了。。怕是有心无力啊 --------------------编程问答-------------------- 如果是学习用还可以去研究下,一般公司的话建议还是别用这个框架,调试麻烦,错误莫名其妙,而且效率不高。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,