试了一晚上也没试出来,有Menu(功能) , Rights (功能的增删改查权限) ,Role(角色)3个domain 
1、menu是功能 
2、rights表示某个功能的有啥权限,如增删改查就是1111 
3、一个role对应有多个rights 
----------------------- 
public class Menu 

public int Id { get; set; } 
public string MenuName { get; set; } 

--------------------------- 
public class Rights 

public int Id { get; set; } 
public Menu Menu { get; set; } 
public string RightsCode { get; set; } } 
----------------------- 
public class Role 

public int Id { get; set; } 
public string RoleName { get; set; } 
public IList<Rights> Rights { get; set; } 

----------------------------- 
在conform里怎么描述他们的关系,才能做到 
1、删除role的时候,rights的相关记录也删除, 
2、删除menu的时候,rights的记录也删除, 
3、删除rights的时候,role和menu不变 
mapper.Class<Rights>(cm => 

cm.ManyToOne(cc => cc.Menu, mm => 

mm.Cascade(Cascade.All | Cascade.DeleteOrphans); 
}); 
这样测试了一下也是错的 
mm.Cascade(Cascade.Persist | Cascade.Remove); 
这样也不对,是在是不会写了,help~ 

解决方案 »

  1.   

    reference key
    估计是吧。
      

  2.   

    有人在没,帮分析下,class定义的对不对,要咋设置
      

  3.   

    . 生成的实体类的所有属性都要设置为 virtual 否则 则会抛出异常!2. 选中..hbm.xml文件类型,在属性窗口中将其“Build Action”设置为“Embedded Resource”(这是非常重要的一步,否则NHibernate将无法找到映射文件)
      

  4.   

    用conform的话可以不用写virtual ,问题应该不是在这里
      

  5.   

    生成的实体类的所有属性都要设置为 virtual 否则 则会抛出异常!2. 选中..hbm.xml文件类型,在属性窗口中将其“Build Action”设置为“Embedded Resource”(这是非常重要的一步,否则NHibernate将无法找到映射文件)
      

  6.   

    conform里面真不用写virtual ,我也没有..hbm.xml我想问用conform怎么写那个对应关系
      

  7.   

    Menu(功能) , Rights (功能的增删改查权限) ,Role(角色)配成双向多对一的形式Rights 存两表的ID 实现级联就可以了
      

  8.   

    随便找一款游戏,你要试玩的话,首先你要注册一个帐号user,然后登录游戏后因为你一个角色都没有,
    系统会跳转到创建角色界面,这里你可能可以创建一个角色,也可以创建两个,三个之类的player。
    也就是说 一个帐号,可以创建多个角色。
    这样我们就说user表中的playerID与player中的playerID是多对一的关系映射。
      <many-to-one
            name="PropertyName"                                属性名
            column="column_name"                               数据库字段名
            class="ClassName"                                  关联的类的名字
            cascade="all|none|save-update|delete"              级联关系
            fetch="join|select"                                抓取
            update="true|false"                                
            insert="true|false"                                
            property-ref="PropertyNameFromAssociatedClass"     指定关联类的一个属性,这个属性将会和本外键相对应
            access="field|property|nosetter|ClassName"         
            unique="true|false"                                是否生成一个唯一约束
            optimistic-lock="true|false"                       
            not-found="ignore|exception"                       指定外键引用的数据不存在时如何处理
      />
    于是我们在User.hbm.xml中 把原来测试用的那个int型的playerID换成
        <many-to-one name="player" class="Player" column="playerID" unique="true" cascade="all" />
    这里顺便提一下,如果类中的属性名与其对应的表中对应的列名完全一样的话,我们可以缩写成这样:
        <property name="userName"/>
        <property name="userPwd"/>