NHibernate 3.2 соответствует составному идентификатору - PullRequest
1 голос
/ 25 октября 2011

Я обновляюсь до NHibernate 3.2.Я использовал Fluent NHibernate, но я не вижу новой сборки для NH 3.2.Я смотрю на использование включенного преобразователя конформ, но он не позволяет составной идентификатор.Я не могу изменить базу данных, поэтому у меня есть ограничение.

В Fluent NHibernate у меня было это (имена изменены только для примера):

        Schema("MY_SCHEMA");
        Table("MY_TABLE");
        CompositeId()
            .KeyProperty(x => x.CompanyId, "COMPANY_ID")
            .KeyProperty(x => x.OrderId, "ORDER_ID")
            .KeyProperty(x => x.OrderDate, "ORDER_DATE")
            .KeyProperty(x => x.ProgramId, "PROGRAM_ID");

Как мне сделать это с помощью Conform вNH 3,2?

Спасибо, Пол

1 Ответ

4 голосов
/ 25 октября 2011

Вы можете попробовать:

mapper.Class<YourEntity>(m=>{
m.Table("MY_TABLE");
m.Schema("MY_SCHEMA");
m.ComposedId(cid=>
{
  cid.Property((e)=>e.CompanyId);
  cid.Property((e)=>e.OrderId);
   cid.Property((e)=>e.OrderDate);
//others...
});
});

И, я просто догадываюсь, так как я не могу понять вашу базу данных, вы, вероятно, сопоставили бы одну часть ключа многие-к-одному (то есть старый ключ-многие-к-одному, который вы бы написали в hbm), для этого используйте cid.ManyToOne() вместо cid.Property(..);

...