gpt4 book ai didi

c# - 如何以引用为标准进行 NHibernate 查询?

转载 作者:行者123 更新时间:2023-11-30 17:23:00 25 4
gpt4 key购买 nike

我正在尝试通过 NHibernate 进行查询,其中结果的标准取决于引用的表。我该怎么做呢?让我们看一个简单的例子:

public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
public Bar ReferencedBar { get; set; }
}

public class Bar
{
public int Id { get; set; }
public string Name { get; set; }
}

然后将 Foo 映射到 Bar:

public class FooMapping : ClassMap<Foo>
{
public FooMapping()
{
Id(c => c.Id).GeneratedBy.HiLo("1");
Map(c => c.Name).Not.Nullable().Length(100);
References(c => c.Bar);
}
}

现在我想从数据库中获取所有引用特定 Bar 的 Foo。此函数使用 Criteria,但如果您认为更好,请给出使用其他内容的示例:

public IList<Foo> GetAllFoosReferencingBar(Bar bar)
{
using (var tx = Session.BeginTransaction())
{
var result = Session.CreateCriteria(typeof(Foo))
.Add(Restrictions./* foo.ReferencedBar == bar */) // <-- How to add restriction using reference?
.List<Foo>();
tx.Commit();
return result;
}
}

最佳答案

这实际上比人们想象的要容易。只需直接使用属性名称和对象向 critierion 添加一个 Equal 限制:

public IList<Foo> GetAllFoosReferencingBar(Bar bar)
{
using (var tx = Session.BeginTransaction())
{
var result = Session.CreateCriteria(typeof(Foo))
.Add(Restrictions.Eq("ReferencedBar", bar) // <--- Added restriction
.List<Foo>();
tx.Commit();
return result;
}
}

关于c# - 如何以引用为标准进行 NHibernate 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com