0

我有以下表格

  • 用户- 主要列 - Id 和其他详细信息列
  • 部门- 主要列 - Id 和其他详细信息列
  • UserDepartment - 主列 - Id 和其他列是 UserId 和 DepartmentId

我想找到部门中的所有用户 - (1和2)。我还想找到部门中的所有用户(1 或 2)。

任何人都可以建议我获得部门(1和2)中所有用户的标准吗?获得部门中所有用户的另一个标准 - (1或2)?

我是 FluentNHibernate 的新手,所以还没有尝试任何东西,因为我在 Google 搜索中没有发现任何相关内容?在 Google 搜索的帮助下,我能够为 1-1 关系编写条件,但不能针对上述情况。

4

1 回答 1

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();
于 2013-06-30T12:55:51.293 回答