当值不在联接表中时选择
本文关键字:选择 | 更新日期: 2023-09-27 18:20:21
我有两个实体(实体被简化):
参与
[ActiveRecord]
public class Participation
{
[PrimaryKey]
public int Id {get;set;}
[HasMany(...)]
public IList<ParticipationEvent> GeneratedEvents {get;set;}
}
和参与事件
[ActiveRecord]
public class ParticipationEvent
{
[PrimaryKey]
public int Id {get;set;}
[BelongsTo]
public ProgramParticipation {get;set;}
[Property]
public int Code {get;set;}
}
其中(正如您所看到的)参与有许多活动。每个事件都有一个唯一的代码。
我想要的是,选择所有没有特定活动的参与者。如何使用NHibernate?我知道我可以使用INNER JOIN来轻松地获得某个事件的所有实例,但这可以用另一种方法吗?
Hibernate/NHubernate支持LEFT OUTER JOIN,它选择表a中连接到表B的所有记录,即使B没有对应的记录。要获取A中不在B中的记录,只需添加WHERE表B.SoleNonNullableColumn IS NULL即可。不可为null的列可以为null的唯一方法是因为LEFT OUTER JOIN中有一行,而表B根本不显示。