Свободное отображение NHibernate на нескольких не-ПК полях
У меня ситуация, аналогичная описанной вСвободное отображение NHibernate не на ПК поле
Однако связь между моими таблицами описывается несколькими столбцами, не относящимися к первичному ключу. Представь себе Криса МикаСитуация, но гдеPerson
имеетJobType
иCode
что вместедолжен (извини, этобаза данных) уникально опишитеPerson
Person
------
Id PK
JobType
Code
Name
Order
-----
Id PK
Person_JobType
Person_Code
OrderDetails
Серхат Özgel-хответ описывает использованиеPropertyRef
, Но я могу'не найти способ сделать это индивидуально для нескольких столбцов. Я'мы пробовали похожие на
class PersonMap : ClassMap
{
public PersonMap()
{
HasMany(p => p.Order)
.KeyColumns.Add("Person_JobType")
.PropertyRef("JobType")
.KeyColumns.Add("Person_Code")
.PropertyRef("Code")
}
}
Но это, очевидно, нет работы, так какKeyColumns.Add()
возвращает другойOneToManyPart
PropertyRef()
ISN»запускается против отдельного добавляемого столбца. Второй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 customColumnMapping)
public TParent Add(ColumnMapping column)
Конкретно последние два, но не моглине могу найти способ установитьPropertyRef
индивидуальный уровень для каждого столбца :( Есть ли способ сделать это? Я иду по этому пути совсем неправильно?