流畅的NHibernate - 如何加入两个"映射"表格使用Criteria API

时间:2016-02-01 23:56:29

标签: nhibernate fluent-nhibernate

我想在NH中内部连接两个基本上将FK映射到其他主表的表。

模特: 案例可以通过角色访问。 案例可以有多个角色(访问权限)。 可以将角色分配给许多案例。 用户可以拥有许多角色。 可以将角色分配给许多用户。

这些表看起来像这样(考虑所有列都是int类型):

CASES_ROLES:
cases_roles_id (PK)
case_id (FK to a case)
role_id (FK to a role)

USER_ROLES:
user_id (FK to a user)
role_id (FK to a role)
--no PK in this table---

我要执行的SQL是:

SELECT cr.case_id AS CaseId
FROM CASES_ROLES cr
INNER JOIN USER_ROLES ur ON ur.role_id = cr.role_id
WHERE ur.user_id = @UserID

输入@UserID。 我有点开始但后来陷入困境:

public class UserRolesEntity
{
    public virtual int UserId { get; set; }
    public virtual int RoleId { get; set; }
}

public class CasesRolesEntity
{
    public virtual int CaseId { get; set; }
    public virtual int RoleId { get; set; }
}

public class UserRolesEntityMap : ClassMap<UserRolesEntity>
{
    public UserRolesEntityMap()
    {
        Table("USER_ROLES");
        CompositeId().KeyProperty(x => x.UserId).KeyProperty(x => x.RoleId);
        Map(x => x.UserId, "user_id");
        Map(x => x.RoleId, "role_id");
    }
}

public class CasesRolesEntityMap : ClassMap<CasesRolesEntity>
{
    public CasesRolesEntityMap()
    {
        Table("CASES_ROLES");
        Id(x => x.Id, "cases_roles_id");
        Map(x => x.CaseId, "case_id").Not.Nullable();
        Map(x => x.RoleId, "role_id").Nullable();
    }
}

我如何使用Criteria API进行映射然后加入?

非常感谢任何帮助。谢谢 - 加夫

0 个答案:

没有答案