2013-12-05 3 views
1

Есть ли способ сопоставить свойство с столбцом базы данных с настраиваемым столбцом, который НЕ является FK, просто ключом кандидата (он уникален для таблицы)?ManyToOne() с InnerJoin на пользовательской колонке

Если нет, то каковы мои варианты здесь? (необходимо ограничить select результаты со связанными табличными ограничениями)

ответ

1

NHibernate поддерживает функцию под названием property-ref. Здесь задокументировано: 5.1.10. many-to-one. Некоторый экстракт:

Атрибут property-ref должен использоваться только для отображения устаревших данных , где внешний ключ ссылается на уникальный ключ соответствующей таблицы , кроме первичного ключа. Это уродливая реляционная модель. Например, для класса класс продукта имеет уникальный серийный номер, то есть не первичный ключ. (Единственный атрибут управляет поколением NHibernate в DDL с инструментом SchemaExport.)

Таким образом, если ребенок таблица содержит, например Guid, который является таким же, как в мишени родительских таблицы ... это может решить проблему. Пример отображения:

<many-to-one name="Parent" property-ref="ParentGuid" column="THE_GUID_COLUMN"/> 

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

References(x => x.Parent) 
    ... 
    .PropertyRef("ParentGuid") 
    .Column("THE_GUID_COLUMN"); 

Во всяком случае, это не идеально и должны использоваться в основном для решения унаследованных вещей.

+0

Что такое атрибут атрибута 'property-ref' в сопоставлении по коду? – dbardakov

+1

Насколько я знаю из этого источника: http://notherdev.blogspot.cz/2012/01/mapping-by-code-manytoone.html * «К настоящему времени нет возможности сопоставить две функции, полезные для устаревших несогласованных баз данных - свойство-ref и не найдено. Может быть, Фабио решил, что устаревшие базы данных не будут сопоставлены с новыми сопоставлениями? »* –

+0

Я прочитал это после вашего ответа и надеялся, что с этого момента ситуация изменится. – dbardakov

Смежные вопросы