1
我在構建關係時遇到了一些麻煩。關於多表返回信息限制的知識
- 一個
Foo
有很多Bar
S,ABar
可以有很多Foo
小號 - 一個
Foo
有很多Zaz
S,AZaz
可以有很多Foo
小號 - 一個
Bar
可以有很多Zaz
S和Zaz
可以有一個Bar
- A
Bar
只能有一個Zaz
每Foo
- A
因此,舉例來說,我應該能夠以下(假設只有一個元素在每種類型爲簡單起見)做:
// 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中?
我很喜歡,因爲複雜的問題,但是這是集中在以這樣的方式創建模式是數據庫強制它或_simply_ NHiberate處理它? –
@ M.Mimpen我不認爲數據庫需要在這裏執行任何特殊的操作。我__think__(糾正我,如果我錯了)它應該只是'Foo:Bar'上的'M:M','Foo:Zaz'上的'M:M'和'Bar上的'1:M' :Zaz'。所以更多的是讓NHibernate能夠很好地播放,所以它在代碼中很有意義。 –