我正在升级到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进行此操作?
谢谢, 保罗
答案 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(..)
;