我正在处理具有锁定架构的旧数据库。我面临的问题是,许多表都是键入已知/固定/硬编码的实体类型Id值而不是列值。这意味着我无法使用普通的References构造。
对于带有ENTITY_TYPEID的表,我可以这样做:
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
References(x => x.Type)
.Columns("ENTITY_SECTION","ENTITY_TYPEID");
}
}
愉快地填充了Entity.Type。
对于固定/已知/硬编码类型的表,我需要映射到硬编码值而不是ENTITY_TYPE列,所以要在代码中使用para-phrase:
public class EntityXMap : ClassMap<EntityX>
{
public EntityXMap(int entityType)
{
References(x => x.Type)
.Columns("ENTITY_SECTION", "ENTITY_TYPE = 123" );
}
}
HasMany()有一个Where()构造,我可以在这种情况下使用......
如何在这里实现类似的任何想法?
答案 0 :(得分: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");