我在如何构建关系方面遇到了一些麻烦。
Foo
有Bar
个,Bar
可以有多个Foo
Foo
有Zaz
个,Zaz
可以有多个Foo
Bar
可以有多个Zaz
个,而Zaz
可以有一个Bar
Bar
每Zaz
Foo
因此,例如,我应该能够执行以下操作(假设每种类型中只有一个元素以简化):
// get a single Foo
Foo foo = this.Session.Get<Foo>(1);
// get a single Bar
Bar bar = this.Session.Get<Bar>(1);
// no restriction on Foo so get a collection
IEnumerable<Zaz> allZazsInFoo = foo.Zazs;
// no restriction on Bar so get a collection
IEnumerable<ZaZ> allZazsInBar = bar.Zazs;
// restriction on Foo by Bar so only one Zaz
Zaz zazOfABarInFoo = foo.Bars.Single().Zaz;
// restriction on Bar by Foo so only one Zaz
Zaz zazOfAFooInBar = bar.Foos.Single().Zaz;
这有意义吗?这种形式的关系(或类似的东西)在NHibernate中是否可能?
答案 0 :(得分:0)
好吧,我最终选择的实际上是非常容易的。
在我添加的Foo
课程中:
public virtual Zaz GetZaz(int barId)
{
return this.Zazs.SingleOrDefault(x => x.Bar.Id == barId);
}
然后这样打电话:
Bar aBarInFoo = foo.Bars.Single();
Zaz zazOfABarInFoo = foo.GetZaz(aBarInFoo.Id);