Может ли кто-нибудь объяснить это мне?
У меня есть стандартные отношения в моей MSSQL БД:
[item]
id
symbol
[item_version]
id
item_id (fk)
symbol
В отображении [item] есть стандартная BAG item_version с cascade = "all" и много-к-одному в отображении [item_version].
Это тестовый пример:
[Test]
public void AddNewVersionToPersistentObject()
{
//creating item
Item i = new Item();
i.Symbol = "Item 1 symbol";
//saving item
Item.Dao.Save(i);
long id = i.Id;
//clearing session and getting item back from DB
DataHelper.DaoFactory.ClearSession();
Item itemFromDb = Item.Dao.GetById(id);
//creating new versions
ItemVersion v1 = new ItemVersion();
v1.Symbol = "version 1 symbol";
ItemVersion v2 = new ItemVersion();
v2.Symbol = "version 2 symbol";
//adding versions and saving item
itemFromDb.AddItemVersion(v1);
itemFromDb.AddItemVersion(v2);
Item.Dao.SaveOrUpdate(itemFromDb);
//clearing session, getting back item and checking results
DataHelper.DaoFactory.ClearSession();
Item itemFromDb2 = Item.Dao.GetById(id);
Assert.AreEqual(2, itemFromDb2.ItemVersions.Count);
}
Тест не пройден, когда я добавляю NEW ItemVersion к объекту Item, взятому из БД (как указано выше).
Когда я добавляю новые ItemVersions в новый Item и вызываю Save on Item - все работает нормально. Это почему?