0

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

我有四张桌子

  1. CTType(id GUID,名称varchar(100),DateOFbirth日期时间)
  2. CTType_Legacy(id GUID,CTType_Legacy_id身份 int)
  3. CTTypeMap( id GUID, createdOn datetime, CtType_id guid)
  4. CTTypeMap_Legacy(id GUID,CT_Type_id int)

信息

  • 前两个表固定了 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的值应该是CTType_Legacy的CTType_Legacy_id列值。我无法将正确的值插入到表 CTTypeMap_Legacy 的CT_Type_id

有人可以让我知道如何在注释突出显示的行上进行映射吗?

4

1 回答 1

0

目前尚不清楚您在哪里设置值,但我想您的意思是

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;
}
于 2012-08-23T09:30:47.047 回答