Я пытаюсь отобразить отношения родитель-потомок, используя NHibernate (2.1.2), MySql.Data (6.2.2) и MySQL Server (5.1). Я понял, что это должно быть сделано с помощью <bag>
в файле сопоставления. Я создаю тестовое приложение, которое работает без каких-либо ошибок и выполняет insert
для каждой записи, но каким-то образом внешний ключ внутри дочерней таблицы (ParentId) всегда пуст (ноль).
Вот важные части моего кода ...
Родитель
public class Parent
{
public virtual int Id { get; set; }
public virtual IList<Child> Children { get; set; }
}
<class name="Parent">
<id name="Id">
<generator class="native"/>
</id>
<bag name="Children" cascade="all">
<key column="ParentId"/>
<one-to-many class="Child"/>
</bag>
</class>
Дети
public class Child
{
public virtual int Id { get; set; }
}
<class name="Child">
<id name="Id">
<generator class="native"/>
</id>
</class>
Программа
using (ISession session = sessionFactory.OpenSession())
{
session.Save(
new Parent()
{
Children = new List<Child>()
{
new Child(),
new Child()
}
});
}
Есть идеи, что я сделал не так?