如何为Legacy表定义流畅的nhibernate映射。
我有四张桌子的
- CTType(idGUID,名称varchar(100),DateOFbirth日期时间)
- CTType_Legacy(idGUID,CTType_Legacy_id标识int)
- CTTypeMap(idGUID,createdOn日期时间,CtType_idGUID)
- CTTypeMap_Legacy(idGUID,CT_Type_idint)
信息
- 前两张表固定了50条记录。这些表是在为客户端配置数据库时首次填充的
- 对于前两个表ID,是映射列(主键)
- 最后两个表CtType_id映射到CtType表的id列
当用户保存新的CTTypeMapObject时,它会从UI将记录插入CTTypeMap表中。映射定义为:
public class CTTypeMapMap :Enity<CTTypeMap>
{
Public CTTypeMapMap()
{
Id(x => x.ID);
Map(x => x.createdOn);
References(x = x.CtType);
Join("CTTypeMap_Legacy", join =>
{
join.KeyColumn("Id");
join.Map(x => x.CTTypeMap).Column("CT_Type_id"); //not working
});
}
}
表CTTypeMap_Legacy的列CT_Type_id值应为CTCType_Legacy的CTRype_Legacy_idcolumn值。我无法将正确的值插入表CTTypeMap_Legacy的CT类型_id中。
有人能告诉我如何在评论突出显示的行上进行映射吗?
不清楚您在哪里设置了值,但我猜您是指
join.References(x => x.CTType_Legacy).Column("CT_Type_id");
更新:以下恶魔懒惰加载
join.References(x => x.CTType).Column("CT_Type_id").PropertyRef("CTType_Legacy_id");
或
join.Map(x => FakeProperty).Column("CT_Type_id").Access.Using<MyPropertyAccessor>();
// in Igetter
public object Get(object obj)
{
return ((CTTypeMap)obj).CTType.LegacyId;
}