3

ロックされたスキーマを持つレガシー データベースを扱っています。私が直面している問題は、多くのテーブルが、列の値を持つのではなく、既知/固定/ハードコードされたエンティティ タイプ Id の値をキーオフしていることです。これは、通常の References コンストラクトを使用できないことを意味します。

ENTITY_TYPEID を持つテーブルの場合、次のことができます。

public class EntityMap : ClassMap<Entity>
{
   public EntityMap()
   {
      References(x => x.Type)
         .Columns("ENTITY_SECTION","ENTITY_TYPEID");
   }
}

これにより、Entity.Type が喜んで取り込まれます。

固定/既知/ハードコードされたタイプのテーブルの場合、ENTITY_TYPE 列の代わりにハードコードされた値にマップする必要があるため、コードをパラフレーズするには:

public class EntityXMap : ClassMap<EntityX>
{
   public EntityXMap(int entityType)
   {
      References(x => x.Type)
         .Columns("ENTITY_SECTION", "ENTITY_TYPE = 123" );
   }
}

HasMany() には、その場合に使用できる Where() コンストラクトがあります...

ここで同様のことを達成する方法はありますか?

4

1 に答える 1

0

やり過ぎかもしれませんが、試してみてください

// add to config
var typemap = new TypeMap();
typemap.Id(x => x.Section, "ENTITY_SECTION");
typemap.Where("ENTITY_TYPE = 123");
typemap.EntityName("Type for EntityX");

References(x => x.Type)
   .Column("ENTITY_SECTION")
   .EntityName("Type for EntityX");
于 2012-06-11T08:52:03.623 に答える