Свободное использование NHibernate FKUnmatchingColumnsException "один ко многим" - PullRequest
0 голосов
/ 17 июня 2020

У меня есть бланк заказа с несколькими строками деталей. Эти подробные строки имеют составной ключ из трех столбцов.

Я не могу понять, как я могу это сопоставить, я продолжаю получать следующую ошибку:

NHibernate.FKUnmatchingColumnsException : Foreign key (FK_BE1C7EE8:INTERN_BON [BONNR, ARTNO, VENR])) must have same number of columns as the referenced primary key (BESTELBON [BONNR])

Это код для сопоставлений:

public class OrderFormMap : ClassMap<OrderForm>
{
    public OrderFormMap()
    {
        Table("BESTELBON");

        Id(x => x.Id, "BONNR").GeneratedBy.Assigned();
        Map(x => x.OrderDate, "BONDATUM");
        References(x => x.Supplier, "LEVCODE");
        Map(x => x.IsUrgent, "DRINGENDEBB");
        Map(x => x.Comment, "BONCOMMENT");
        Map(x => x.Type, "BONTYPE");
        HasMany(x => x.OrderFormDetails).KeyColumns.Add("BONNR", "ARTNO","VENR");
    }
}


public class OrderFormDetailMap : ClassMap<OrderFormDetail>
{
    public OrderFormDetailMap()
    {
        Table("INTERN_BON");

        CompositeId()
            .ComponentCompositeIdentifier(x => x.Id)
            .KeyProperty(x => x.Id.ArticleId, "ARTNO")
            .KeyProperty(x => x.Id.OrderFormNr, "BONNR")
            .KeyProperty(x => x.Id.ConsumerId, "VENR");
        Map(x => x.AmountCancelled, "ANNULATIE");
        Map(x => x.AmountOrdered, "IBONBESTELD");
        Map(x => x.PHVI, "PHVI");
        Map(x => x.PricePerUnit, "IBONEENH");
        References(x => x.Warehouse, "HMAGCODE");
    }
}
...