Свободное сохранение таблицы NHibernate на подкласс - PullRequest
1 голос
/ 09 декабря 2010

Это мои настройки:

public class Parent
{
    public virtual int Id { get; protected set; }
    public virtual Property1 { get; set; }
}

public class Child : Parent
{
    public virtual Property2 { get; set; }
}

public sealed class ParentMap : ClassMap<Parent>
{
    public ParentMap()
    {
        Id( m => m.Id );
        Map( m => m.Property1 );
    }
}

public sealed class ChildMap : SubclassMap<Child>
{
    public ChildMap()
    {
        KeyColumn( "ParentId" );
        Map( m => m.Property2 );
    }
}

Это прекрасно работает для получения данных.Как мне сохранить это, хотя?Я хочу создать новую дочернюю запись в базе данных, которая привязана к родителю.Если я создаю новый дочерний класс с теми же родительскими значениями и сохраняю, я получаю сообщения об ошибках: a different object with the same identifier value was already associated with the session: 2, of entity: Child

Полагаю, это имеет смысл, но как мне создать нового дочернего класса с таким же родителембаза данных?

Может быть, это невозможно, и я должен просто сделать один ко многим от Родителя к Ребенку.

1 Ответ

1 голос
/ 10 декабря 2010

Вы неправильно используете наследство. Вы не можете изменить тип объекта.

Вы, вероятно, хотите один на один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...