1

我正在升级到 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 执行此操作?

谢谢,保罗

4

1 回答 1

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

于 2011-10-25T14:45:38.447 回答