NHibernate On Legacy База данных Как сказать NHibernate, который является родительской таблицей - PullRequest
0 голосов
/ 11 августа 2010

У меня есть две таблицы в устаревшей базе данных ...

tblParentTable (int id, string specialIdentifier, ...)
tblChildTable (int id, string specialIdentifier, ...)

Как видите, автоматически добавляемый int id был добавлен, но дочерняя таблица объединяется с использованием старого строкового первичного ключа (на самом деле specialIdentifier является первичным ключом tblParentTable, а первичный и внешний ключи - в tblChildTable) ).

Итак, я создал доменные объекты и карты Fluent NHibernate, но из-за этой странной схемы NHibernate считает, что сначала необходимо сохранить запись tblChildTable, а затем сохранить tblParentTable - это приводит к ошибке ограничения внешнего ключа.

Как я могу намекнуть NHibernate, что tblParentTable является родительским и должен быть сохранен первым?

Вот такие отображения ...

public ParentMap()
{
    Table("tblParentTable");
    Id(x => x.Id).Column("id");
    Map(x => x.SpecialIdentifier);
    References(x => x.Child).Column("specialIdentifier");
}

public ChildMap()
{
    Table("tblChildTable");
    Id(x => x.Id).Column("id");
    Map(x => x.SpecialIdentifier);
    References(x => x.Child).Column("specialIdentifier");
}

Пожалуйста, не стесняйтесь спрашивать дополнительную информацию, если вы считаете, что я упускаю что-то важное.

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 августа 2010

Если вы хотите сделать такое отображение в Fluent NHibernate, здесь есть хорошая статья:

http://wiki.fluentnhibernate.org/Fluent_mapping

0 голосов
/ 11 августа 2010

Я не использую бегло; вместо этого я создаю свои сопоставления, создавая файлы сопоставления xml вручную. Я считаю, что свойство «обратное» в ассоциации позволяет вам указать «владельца» (родителя) ассоциации. Поскольку я не использую свободное владение, я не знаю, как указать это в вашем отображении, поэтому я не могу привести вам пример.

Кроме того, в сопоставлении Xml я использовал бы атрибут 'property-ref', чтобы указать, что 'specialIdentifier' - это столбец, используемый отношением.

...