Свободное отображение NHibernate составного идентификатора из унаследованных составных идентификаторов

Скажем, у меня есть существующая база данных со следующими 3 таблицами:

Таблица1:
(PK) T1ID1
(PK) T1ID2

Таблица2:
(PK) T2ID1

Таблица 3:
(FK) T1ID1
(FK) T1ID2
(FK) T2ID1 (где 3 ключа взяты из таблиц выше)

У меня вопрос: как сопоставить Table3 с Fluent NHibernate?
Что меня сбивает с толку, так это то, что делать с тем фактом, что его составные ключи берутся из двух разных таблиц.

У меня есть следующие сопоставления для таблиц 1 и 2:

public class Table1
{
    public virtual long T1ID1 { get; set; }
    public virtual long T1ID2 { get; set; }
}

public class Table2
{
    public virtual long T2ID1 { get; set; }
}

public class Table1Map
{
    public Table1Map()
    {
        Table("Table1");

        CompositeId()
            .KeyProperty(x => x.T1ID1, "T1ID1")
            .KeyProperty(x => x.T1ID2, "T1ID2");
    }
}

public class Table2Map
{
    public Table2Map()
    {
        Table("Table2");

        Id(x => x.T2ID1, "T2ID1");
    }
}

comment
У меня есть некоторая боль, просто пытаясь сопоставить m: n с обеими таблицами, составными pk. казалось бы, даже не такой острый, как ваш случай. При удаче?   -  person Sky Sanders    schedule 02.02.2010


Ответы (1)


попробуйте посмотреть Свободный NHibernate и составной идентификатор с одним именем столбца Я думаю, что вам нужно свойство ".KeyReference ()". Ссылка выше использует старую версию FNH, но все, о чем вам нужно беспокоиться, что касается вашей проблемы, это то, что имена методов немного отличаются. вся остальная часть этой статьи должна вам помочь.

Дай мне знать, как дела.

person cdmdotnet    schedule 01.03.2010