【发布时间】:2014-11-11 13:52:43
【问题描述】:
我有一个具有一对一循环引用的类,并假设它们看起来像这样。
public class Foo
{
public Bar Bar { get; set; }
/* Some irrelevant code */
}
和
public class Bar
{
public Foo Foo { get; set; }
/* Some irrelevant code */
}
和流畅的休眠地图
BarMap
{
Table("Bars");
// Some mappings
Reference(x => x.Foo).Column("FooId");
}
FooMap
{
Table("Foos");
// Some Mappings
HasOne(x => x.Bar).PropertyRef(x => x.Foo).Not.Lazy.Cascade.SaveUpdates();
}
我意识到你不能在 nhibernate 中懒惰地加载一对一的关系,所以我想做的是选择所有的 Bars 并在我想要 Foo 的东西时将它加入到 Foo 中。 我想我需要获取 Bar 但是当我执行时:
var foos = session.Query<Foo>().Where(/*Some boolean logic*/).Fetch(x => x.Bar).ToList();
Nhibernates 然后执行多个 SQL 语句,为每个 Foo 选择一个 Bar。我只想选择两次。一次用于 Foo,一次用于 Bar - 因为这不能延迟加载。我怎样才能做到这一点?
【问题讨论】:
标签: c# sql nhibernate fluent-nhibernate one-to-one