我想在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进行映射然后加入?
非常感谢任何帮助。谢谢 - 加夫