Ik ben nog eens verder met NHibernate aan het spelen, en ik loop nu tegen het volgende.
Ik heb 2 classes, een class 'Container' en een class 'Item'.
Een container bevat items.
De container ziet er bv zo uit:
Item:
Nu, als ik gewoon deze eenvoudige code uitvoer, dan wordt m'n container wel in m'n DB gesaved, maar de Items van die container niet.
Ik zie echt niet in wat ik hier fout doe, of wat er voor zorgt dat m'n Items niet opgeslagen worden. Ik krijg ook geen excepties.
Het relevante gedeelte van m'n mapping files ziet er zo uit:
Container:
Item
Ik heb 2 classes, een class 'Container' en een class 'Item'.
Een container bevat items.
De container ziet er bv zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| public class Container
{
private int _containerId;
private IList _items = new ArrayList();
public int ContainerId
{
get { return _containerId; }
}
public IList Items
{
get {return _items; }
set { _items = value; }
}
} |
Item:
code:
1
2
3
4
5
6
7
8
| public class Item
{
private int _itemId;
private string _name;
private Container _container;
// properties weggelaten
} |
Nu, als ik gewoon deze eenvoudige code uitvoer, dan wordt m'n container wel in m'n DB gesaved, maar de Items van die container niet.
code:
1
2
3
4
5
6
7
8
| Container c = new Container(); Item it = new Item(); it.Name = "bliep"; c.Items.Add (it); ISession s = AppSettings.Instance.SessionFactoryObj.OpenSession(); s.Save (c); |
Ik zie echt niet in wat ik hier fout doe, of wat er voor zorgt dat m'n Items niet opgeslagen worden. Ik krijg ook geen excepties.
Het relevante gedeelte van m'n mapping files ziet er zo uit:
Container:
code:
1
2
3
4
5
6
7
| <class name="TestApp.Container, TestApp" table="tblContainer">
...
<bag name="Items">
<key column="ContainerId"/>
<one-to-many class="TestApp.Item, TestApp"/>
</bag>
</class> |
Item
code:
1
2
3
4
5
| <class name="TestApp.Item" .... >
....
<many-to-one name="Items" column="ContainerId"
class="TestApp.Container, TestApp" not-null="true"/>
</class> |
https://fgheysels.github.io/