我有以下对象
public class Document
{
public Guid Id { get; set; }
public ISet<Tag> Tags { get; set;}
...
}
public class Tag
{
public Guid Id { get; set;}
}
这是多对多关系,但我没有中间 DocumentTag 对象。我正在尝试使用 QueryOver 语法来返回具有所有一组标签的所有文档。这是我到目前为止所拥有的。
Guid[] tagsThatMustMatch = ...;
var result = Session.QueryOver<Document>()
.WithSubquery
.WhereExists(QueryOver.Of<Tag>().Where(t => tagsThatMustMatch.Contains(t.Id))
.List()
我无法表达要求。我知道我必须动态构建一个查询,该查询将为每个必须匹配的标签提供一个 WhereExists。这些 WhereExists 需要进行与运算。我遇到的另一个问题是 WhereExists 方法需要接受 DetachedQuery。但是我没有办法限制它只查看这个文档没有所有标签的标签。
有没有什么例子可以让我看到如何做这样的事情?