我使用ASP.NET MVC 3流利NHiberante,我得到一个关系多到很多使用这些模型:ASP.NET MVC - NHibernate的多对多 - 凡在问题
# User model
public class User
{
public virtual int Id { get; set; }
public virtual int Name { get; set; }
public virtual IList<Role> Roles { get; set; }
}
# Role model
public class Role
{
public virtual int Id { get; set; }
public virtual int Name { get; set; }
public virtual IList<User> Users { get; set; }
}
# User map
class UsuarioMap : ClassMap<Usuario>
{
public UsuarioMap()
{
Id(x => x.Id);
Map(x => x.Name);
HasManyToMany(x => x.Roles)
.AsBag()
.Inverse()
.Table("role_user");
Table("user");
}
}
# Role map
public class PerfilMap : ClassMap<Role>
{
public PerfilMap()
{
Id(x => x.Id);
Map(x => x.Name);
HasManyToMany(x => x.Users)
.AsBag()
.Cascade
.All()
.Table("role_user");
Table("role");
}
}
而且在其中链接的机型值的表会显示这样的:
# Table role_user
Role_id User_id
1 1
2 1
3 2
4 1
1 2
我的疑问是,我怎么可以创建一个SQL的NHibernate这个表里面只返回用户不重复的用户。
我试图用 “凡”,但直到现在蒙山现在的成功:
User user= null;
List<Role> roles = null;
var userList = NHibernateHttpModule.Session.QueryOver<User>(() => user)
.JoinAlias(() => user.Roles,() => roles)
.Where(Restrictions.In("User_id", Roles))
你想返回所有拥有至少一个角色的用户? – 2012-08-10 14:12:51
正确的伊恩,有可能吗? – 2012-08-10 14:17:24