小编Rya*_*n O的帖子

NHibernate QueryOver WhereExists on Many-to-Many

我有一个多对多的关系,我试图查询.我的问题与Phillip Haydon 在这里详述的问题非常类似,所以我将自由地借用他的图表和解释.

Phillip在Jobs和Roles之间存在以下多对多关系(抱歉我还无法嵌入图像):
数据模式

Phillip需要查询未分配给作业的所有角色.他的解决方案如下:

Role roleAlias = null;

var existing = QueryOver.Of<JobRole>()
                    .Where(x => x.Job.JobId == jobId)
                    .And(x => x.Role.RoleId != roleId)
                    .And(x => x.Role.RoleId == roleAlias.RoleId)
                    .Select(x => x.Role);

result = Session.QueryOver<Role>(() => roleAlias)
            .Where(x => x.IsEnabled)
            .WithSubquery.WhereNotExists(existing)
            .OrderBy(x => x.Name).Asc
            .List();
Run Code Online (Sandbox Code Playgroud)

这非常有用,但似乎在这个解决方案中每个表都有一个实体; 工作,JobRole和角色.JobRole既有工作又有角色.可能是这样的:

public class Job
{
  public int JobId {get;set;}
  public string Name {get; set;}
  public bool IsEnabled {get;set;}
  public bool IsDefault {get;set;}
}

public class Role
{
  public int RoleId {get;set}
  public string …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate queryover

3
推荐指数
1
解决办法
2476
查看次数

标签 统计

c# ×1

nhibernate ×1

queryover ×1