저는 일대일 순환 참조가있는 클래스가 있으며, 다음과 같이 보일 것이라고 가정합니다.일대일 Nhibernate가 다중 SQL 문을 호출합니다.
public class Foo
{
public Bar Bar { get; set; }
/* Some irrelevant code */
}
및
public class Bar
{
public Foo Foo { get; set; }
/* Some irrelevant code */
}
과 유창한 NHibernate에지도
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에의 일대일 관계를로드 할 수 없습니다 실현 Foo에서 무언가를 원할 때 바 전체를 모두 선택하여 Foo에 가입시키는 것입니다.
이var foos = session.Query<Foo>().Where(/*Some boolean logic*/).Fetch(x => x.Bar).ToList();
Nhibernates 각 푸 하나의 줄을 선택, 여러 SQL 문을 실행합니다 은 내가 줄을 가져 오기 위해 필요하지만 실행할 때 생각. 두 번만 선택하고 싶습니다. Foo에 한 번, Bar에 한 번 -이 기능은 게으르지 않습니다. 어떻게해야합니까?
내 코드에서 또 다른 문제점을 발견했습니다. Bar는 Foo와 같은 방식으로 다른 클래스에 일대일 순환 참조를 사용합니다 ... – Minivergur