3
我想通過NHibernate做一個查詢,其中結果的標準取決於引用的表。我該怎麼做呢?讓我們來看一個簡單的例子:然後如何做參考作爲標準的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; }
}
美孚映射到酒吧:
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);
}
}
現在我想從其中引用特定的酒吧數據庫中獲取所有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;
}
}