我使用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