NHibernate 3.2 соответствует составному идентификатору

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

В 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?

Спасибо, Пол.


person Paul Speranza    schedule 25.10.2011    source источник
comment
Есть сборка FNH для NH 3.2. Для этого существует пакет NuGet: nuget.org/List/Packages/FluentNHibernate/1.3. 0,717   -  person Cole W    schedule 25.10.2011


Ответы (1)


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

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(..);

person Felice Pollano    schedule 25.10.2011
comment
Феличе, спасибо. Вы привели меня прямо к этому. Мое решение выглядит так: ComposedId(cid => { Property(x => x.CompanyId, e => e.Column (COMPANY_ID)); Property(x => x.OrderId, e => e.Column (ORDER_ID) ); }); и т.д - person Paul Speranza; 25.10.2011
comment
@Paul Пол, я рад, что помог решить вашу проблему, я бы указал на тот факт, что вы можете автоматически генерировать имена столбцов, поскольку у вас, похоже, есть соглашение: посмотрите здесь felicepollano.com/2011/09/01/ не точно ваш случай, но я уверен вы можете взять какую-то идею из него. - person Felice Pollano; 25.10.2011