Свободное отображение NHibernate на нескольких не-ПК полях

У меня ситуация, аналогичная описанной вСвободное отображение NHibernate не на ПК поле

Однако связь между моими таблицами описывается несколькими столбцами, не относящимися к первичному ключу. Представьте себе ситуацию Криса Мика, но гдеPerson имеетJobType иCode что вместедолжен (извините, это устаревшая база данных)Person

Person
------
Id PK
JobType
Code
Name

Order
-----
Id PK
Person_JobType
Person_Code
OrderDetails

Серхат Озгелсответ описывает использованиеPropertyRef, но я не могу найти способ сделать это индивидуально для нескольких столбцов. Я пробовал подобное

class PersonMap : ClassMap<Person>
{
    public PersonMap()
    {
        HasMany(p => p.Order)
            .KeyColumns.Add("Person_JobType")
            .PropertyRef("JobType")
            .KeyColumns.Add("Person_Code")
            .PropertyRef("Code")
    }
}

Но это, очевидно, не работает, так какKeyColumns.Add() возвращает другойOneToManyPart такPropertyRef() не запускается с добавляемым отдельным столбцом. СекундаPropertyRef() просто перезаписывает первый, и я получаю следующую ошибку:

NHibernate.MappingException : collection foreign key mapping
has wrong number of columns: MyApp.Person.Order type: Int32

Я посмотрел на различные перегрузки KeyColumns.Add (),

public TParent Add(string name)
public TParent Add(params string[] names)
public TParent Add(string columnName, Action<ColumnPart> customColumnMapping)
public TParent Add(ColumnMapping column)

В частности, последние два, но не мог найти способ установитьPropertyRef индивидуальный уровень для каждого столбца :( Есть ли способ сделать это? Я иду по этому пути совсем неправильно?

Ответы на вопрос(1)

Ваш ответ на вопрос