Сопоставить таблицу с составным ключом / внешним ключом с этой таблицей

Я пытаюсь сопоставить таблицу с составным ключом и сопоставить другую таблицу, которая ссылается на эту таблицу.

Предположим, эти таблицы:

ITEMDELIVERY с соответствующими столбцами:ITEMDELIVERY_IDDELIVERY_DATEITEMDELIVERYDETAIL с соответствующими столбцами:ITEMDELIVERYDETAIL_IDITEMDELIVERY_IDPARTITIONDATE

КолонныITEMDELIVERY.ITEMDELIVERY_ID а такжеITEMDELIVERY.DELIVERY_DATE вместе образуют ПК.
КолонныITEMDELIVERYDETAIL.ITEMDELIVERY_ID а такжеITEMDELIVERYDETAIL.PARTITIONDATE сформировать ФК изITEMDELIVERYDETAIL вITEMDELIVERY.

Как мне это отобразить?

Я попробовал следующее:

IAutoMappingOverride<ItemDeliveryDetail>:

mapping.References(x => x.ItemDelivery)
       .Columns("ITEMDELIVERY_ID", "PARTITIONDATE");

IAutoMappingOverride<ItemDelivery>:

mapping.CompositeId().KeyProperty(x => x.Id, "ITEMDELIVERY_ID")
                     .KeyProperty(x => x.DeliveryDate, "DELIVERY_DATE");

Но это не работает, это приводит кSystem.InvalidCastException: Invalid cast from 'DateTime' to 'Double'. при звонкеSaveOrUpdate на сессии.

ОБНОВИТЬ:

Я только что проверил сгенерированный SQL, и он показывает, что NHibernate каким-то образом переключает значения:

INSERT INTO ITEMDELIVERYDETAIL
       (ITEMDELIVERYDETAIL_ID,      AMOUNT, PROCESSED_BY_REM, SINGLE_ITEM_PRICE, 
        ITEMDELIVERY_ID, PARTITIONDATE, SupplierInvoice_id)
VALUES (hibernate_sequence.nextval, :p0,    :p1,              :p2,               
        :p3,             :p4,           :p5)
returning ITEMDELIVERYDETAIL_ID into :nhIdOutParam;

:p0 = 20.12.2011 16:29:44 [Type: Double (0)], 
:p1 = 6 [Type: DateTime (0)], 
:p2 = 21.12.2011 16:29:44 [Type: Double (0)], 
:p3 = 7 [Type: Int32 (0)], 
:p4 = 0 [Type: DateTime (0)], 
:p5 = 19.12.2011 16:29:44 [Type: Int32 (0)], 
:nhIdOutParam = 27638398 [Type: Int32 (0)]

Как видите, параметры - полный беспорядок ...
Они должны быть такими:

:p0 = 6 [Type: Double (0)], 
:p1 = 21.12.2011 16:29:44 [Type: DateTime (0)], 
:p2 = 7 [Type: Double (0)], 
:p3 = 0 [Type: Int32 (0)], 
:p4 = 19.12.2011 16:29:44 [Type: DateTime (0)], 
:p5 = 27638398 [Type: Int32 (0)], 
:nhIdOutParam = NULL [Type: Int32 (0)]

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

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