【问题标题】:NHibernate: HasMany components and Where/Contains clauseNHibernate:HasMany 组件和 Where/Contains 子句
【发布时间】:2023-03-10 07:07:01
【问题描述】:

我正在尝试研究如何使用 Linq to 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; }
}

Foo 的 Bar 集合被映射为一对多的组件集合。

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

var myBar = new Bar { Name = "test", Color = "testColor" };

var matchingFoos = Session.Linq<Foo>
                   .Where(foo => foo.Bars.Contains(myBar),
                          new BarEqualityComparer())
                   .ToList();

我不确定这是否正确,但每当我运行此查询时,我都会从一个名为 NHibernate.Linq.Visitors.WhereArgumentsVisitor.GetCollectionContainsCriteria 方法的方法中得到 NullReferenceException。

谁能帮我用另一种方法来运行这个查询?

【问题讨论】:

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

标签: linq nhibernate components contains


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2014-08-18
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多