首页 文章

流畅的NHibernate多对一加入子串

提问于
浏览
0

我试图在Fluent Nhibernate中将2个表一起映射,但加入它们的唯一方法是基于在其中一个列上使用LEFT函数 . 所以SQL连接看起来像这样:

select * from TableA INNER JOIN TableB ON LEFT(TableA.ColA, 12) = TableB.ColB

有没有办法在NHibernate中映射这个?

1 回答

  • 0

    我不是百分百肯定这会有效 . 但它可能值得一试 . 假设你有ClassA和ClassB . ClassA应该以您描述的方式引用ClassB . 然后,您可以向ClassB添加一个属性,该属性应该包含LEFT sql语句的结果 . 以免现在称它为BKey . 然后ClassB看起来像这样:

    public class ClassB {
        public virtual string BKey { get; set; }
        //Other properties
    }
    

    然后,当您映射ClassB时,您可以将公式映射到属性BKey . 这看起来像这样:

    Map(x => x.BKey).Formula("(SELECT LEFT(b.[[columnname]], 12) FROM TableB as b WHERE b.Id = Id)");
    

    这将获取该sql查询的结果并放入属性BKey . 然后,当您为ClassA映射该引用时,您执行以下操作:

    Reference(x => x.ClassB).PropertyRef(x => x.BKey).Column("[[TableAColumnName]]");
    

    再说一次,我不确定这是否会奏效,我自己也没有尝试过这样的事情 .

相关问题