Как следует из названия, я хотел бы создать отношения многие-к-одному, используя Fluent NHibernate. Есть GroupEntries, которые принадлежат группе. Сама Группа может иметь другую Группу в качестве родительской.
Это мои сущности:
public class GroupEnty : IGroupEnty
{
public virtual long Id { get; set; }
public virtual string Name { get; set; }
...
public virtual IGroup Group { get; set; }
}
public class Group : IGroup
{
public virtual long Id { get; set; }
public virtual string Name { get; set; }
...
public virtual IGroup Parent { get; set; }
}
А это файлы сопоставления:
public class GroupEntryMap : ClassMap<GroupEntry>
{
public GroupEntryMap()
{
Table(TableNames.GroupEntry);
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.Name).Not.Nullable();
...
References<Group>(x => x.Group);
}
}
public class GroupMap : ClassMap<Group>
{
public GroupMap()
{
Table(TableNames.Group);
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.Name).Not.Nullable();
...
References<Group>(x => x.Parent);
}
}
При такой конфигурации Fluent NHibernate создает следующие таблицы:
GroupEntry
bigint Id string Name ... bigint Group_id
Group
bigint Id string Name ... bigint Parent_id bigint GroupEntry_id
Я не знаю, почему он создает столбец "GroupEntry_id" в таблице "Группа". Я только картирую другую сторону отношений. Есть ли ошибка в моей конфигурации или это ошибка?
Тот факт, что «GroupEntry_id» создается с ограничением «не ноль», доставляет мне много хлопот, иначе мне, вероятно, было бы все равно.
Я был бы очень признателен за любую помощь по этому вопросу, это меня давно беспокоило, и я не могу найти посты с похожей проблемой.
Редактировать: Я НЕ хочу создавать двунаправленную ассоциацию!