Свободное отображение 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
индивидуальный уровень для каждого столбца :( Есть ли способ сделать это? Я иду по этому пути совсем неправильно?