多对一,具有缺失列的固定值

时间:2012-06-08 16:13:57

标签: c# fluent-nhibernate fluent-nhibernate-mapping

我正在处理具有锁定架构的旧数据库。我面临的问题是,许多表都是键入已知/固定/硬编码的实体类型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()构造,我可以在这种情况下使用......

如何在这里实现类似的任何想法?

1 个答案:

答案 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");