用于遗留表的Fluent nhiberante映射



如何为Legacy表定义流畅的nhibernate映射。

我有四张桌子的

  1. CTType(idGUID,名称varchar(100),DateOFbirth日期时间)
  2. CTType_Legacy(idGUID,CTType_Legacy_id标识int)
  3. CTTypeMap(idGUID,createdOn日期时间,CtType_idGUID)
  4. 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_LegacyCTRype_Legacy_idcolumn值。我无法将正确的值插入表CTTypeMap_LegacyCT类型_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;
}

相关内容

  • 没有找到相关文章

最新更新