Я пытаюсь настроить двунаправленное отношение «один-ко-многим» в NHibernate для 2 классов с комбинированными ключами, которые перекрываются.Другая трудность заключается в том, что я не могу просто отредактировать таблицы SQL, чтобы, например, добавить правильный идентификатор.
Это, вероятно, простой вопрос, но я нигде не могу найти ответ.
IНасколько я понимаю, у меня есть HasMany.Но я застрял с HasOne.Также пробовал со ссылкой.
public class Parent
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public List<Child> Children { get; set; }
public string Data { get; set; }
}
public class Child
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public string D { get; set; }
public Parent Parent { get; set; }
public string Data { get; set; }
}
public class ParentMap : ClassMap<Parent>
{
public ParentMap()
{
CompositeId()
.KeyProperty(x => x.A)
.KeyProperty(x => x.B)
.KeyProperty(x => x.C);
Map(x => x.Data);
HasMany(x => x.Children)
.KeyColumn("A")
.KeyColumn("B")
.KeyColumn("C");
}
}
public class ChildMap : ClassMap<Child>
{
public ChildMap()
{
CompositeId()
.KeyProperty(x => x.A)
.KeyProperty(x => x.B)
.KeyProperty(x => x.C)
.KeyProperty(x => x.D);
Map(x => x.Data);
HasOne(x => x.Parent);
// also tried
//References<Parent>(x => x.Parent)
//.Columns("A", "B", "C");
}
}
Ошибка, которую я получаю сейчас: NHibernate.FKUnmatchingColumnsException: 'Внешний ключ (FK_3346D8AD: Child [C])) должен иметь такое же количество столбцов, что и первичный ключ, на который есть ссылка (Parent).[A, B, C]) '