NHibernate条件连接多个枚举值

NHibernate条件连接多个枚举值,nhibernate,nhibernate-criteria,Nhibernate,Nhibernate Criteria,我有一个名为User的类,在这个类中有一组UserRole枚举值 public class User { ... public ICollection<UserRole> UserRoles { get; private set; } ... } [Flags] public enum UserRole { Beginner = 1, Advanced = 2, Expert = 4, Admin = 8 } 现在我想创建一

我有一个名为User的类,在这个类中有一组UserRole枚举值

public class User {
    ...
    public ICollection<UserRole> UserRoles { get; private set; }
    ...
}

[Flags]
public enum UserRole {
    Beginner = 1,
    Advanced = 2,
    Expert = 4,
    Admin = 8
}
现在我想创建一个条件,其中的语义与

select u.* from tblUser u 
left join tblUserRole ur on ur.UserId = u.UserId
where ur.RoleId = @USER_ROLE
是否可以使用queryOver或分离的标准来实现这样的标准,而无需为UserRole enum提供单独的映射文件

提前谢谢你的提示


Mrks

您已经有了一个标志枚举,它基本上已经是一个值的集合。为此,您甚至不需要表UserRoles和Roles,只要在User中添加一个简单的列就足够了

[Flags]
public enum UserRoles {
    Beginner = 1,
    Advanced = 2,
    Expert = 4,
    Admin = 8
}

public virtual UserRoles Roles { get; private set; }

<property name="Roles" column="UserRoles"/>
当你真的想要这样的东西时:

public class User {
    ...
    public virtual ICollection<UserRole> Roles { get; private set; }
    ...
}

public class UserRole {
    public virtual int Id { get; set; }

    ...
}
然后

public class User {
    ...
    public virtual ICollection<UserRole> Roles { get; private set; }
    ...
}

public class UserRole {
    public virtual int Id { get; set; }

    ...
}
<bag name="Roles" table="tblUserRole" cascade="none"> <!-- none because Roles are somewhat static not per user -->
   <key column="UserId"/>
   <many-to-many column="RoleId" class="UserRole, SampleDll" />      
</bag>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="UserRole" table="Roles">
    <id name="Id"/>
    <!--additional properties-->
  </class>
</hibernate-mapping>