Linq NHibernate:有许多组件和Where/Contains子句

Linq NHibernate:有许多组件和Where/Contains子句,linq,nhibernate,components,contains,Linq,Nhibernate,Components,Contains,我正在尝试解决如何使用Linq到NHibernate创建查询 我有两门课是这样的: public class Foo { private ISet<Bar> _bars = new HashedSet<Bar>(); public virtual ISet<Bar> Bars { get { return _bars; } set { _bars = value; } } } public cl

我正在尝试解决如何使用Linq到NHibernate创建查询

我有两门课是这样的:

public class Foo
{
    private ISet<Bar> _bars = new HashedSet<Bar>();
    public virtual ISet<Bar> Bars
    {
        get { return _bars; }
        set { _bars = value; }
    }
}

public class Bar
{
    public string Name { get; set; }
    public string Color { get; set; }
}
var myBar = new Bar { Name = "test", Color = "testColor" };

var matchingFoos = Session.Linq<Foo>
                   .Where(foo => foo.Bars.Contains(myBar),
                          new BarEqualityComparer())
                   .ToList();
公共类Foo
{
私有ISet_bar=新哈希集();
公共虚拟网吧
{
获取{返回_条;}
设置{u条=值;}
}
}
公共类酒吧
{
公共字符串名称{get;set;}
公共字符串颜色{get;set;}
}
Foo的Bar集合映射为一对多组件集合

现在,我想运行一个如下所示的查询:

public class Foo
{
    private ISet<Bar> _bars = new HashedSet<Bar>();
    public virtual ISet<Bar> Bars
    {
        get { return _bars; }
        set { _bars = value; }
    }
}

public class Bar
{
    public string Name { get; set; }
    public string Color { get; set; }
}
var myBar = new Bar { Name = "test", Color = "testColor" };

var matchingFoos = Session.Linq<Foo>
                   .Where(foo => foo.Bars.Contains(myBar),
                          new BarEqualityComparer())
                   .ToList();
var myBar=newbar{Name=“test”,Color=“testColor”};
var matchingFoos=Session.Linq
.Where(foo=>foo.bar.Contains(myBar),
新的BarEqualityComparer())
.ToList();
我不确定这是否正确,但每当运行此查询时,我都会从名为NHibernate.Linq.Visitors.wherergumentsvisitor.GetCollectionContainsCriteria方法的方法中得到一个NullReferenceException


有谁能帮我找到运行此查询的替代方法吗?

BarEqualityComparer肯定会失败。提供程序没有简单的方法将自定义类转换为SQL语句。

我认为Linq to NHibernate无法处理此类查询。这是一个非常小的实现。