我有以下表格
我想找到所有部门用户 - (1和2)。 我还想找到所有部门用户 - (1或2)。
有人可以向我建议让所有用户进入部门(1和2)的标准吗?让所有用户进入部门的另一个标准 - (1或2)?
我是FluentNHibernate的新手,因此我没有尝试任何操作,因为我发现Google搜索没有任何相关内容?在谷歌搜索的帮助下,我能够为1-1关系编写标准,但不能用于上述情况。
答案 0 :(得分:1)
假设以下课程
class User
{
public virtual int Id { get; private set; }
public virtual ICollection<Department> Departments { get; private set; }
}
class Department
{
public virtual int Id { get; private set; }
}
class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id);
HasManyToMany(x => x.Departments)
.Table("UserDepartment")
.ParentKeyColumn("UserId")
.ChildKeyColumn("DepartmentId");
}
}
然后查询1或2
var results = session.QueryOver<User>()
.JoinQueryOver<Department>(x => x.Departments)
.Where(d => d.Id.IsIn(departmentIds))
.List();
查询1和2
User userAlias = null;
var subquery = session.QueryOver<Department>()
.Where(d => d.User.Id == userAlias.Id && d.Id.IsIn(departmentIds))
.Select(Projections.RowCount());
var results = session.QueryOver<User>()
.WithSubquery.WhereValue(departments.Count).Eq(subquery)
.List();