NHibernate 3.2符合复合id

时间:2011-10-25 14:26:08

标签: nhibernate composite-primary-key conform

我正在升级到NHibernate 3.2。我使用的是Fluent NHibernate,但我没有看到NH 3.2的新版本。我正在使用包含的Conform映射器,但它似乎不允许复合ID。我无法更改数据库,所以我有一个约束。

在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");

如何使用NH 3.2中的Conform进行此操作?

谢谢, 保罗

1 个答案:

答案 0 :(得分:4)

您可以尝试:

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