1

SQL Server 语法是:

select tableAColumn1, tableAColumn2, tableBColumn1
from tableA, tableB
where ISNUMERIC(tableAColumn1) = 1
and CONVERT(INT, tableAColumn1) = tableBColumn1
and tableAColumn2 = 'something'

在 Fluent NHibernate 中实现这一目标的最佳方法是什么?我需要多少类来帮助获得生成的 ClassMap 以及它的外观?

编辑:

public class BarausInfoMap : ClassMap<BarausInfo>
    {
        public BarausInfoMap()
        {
            Table("BARAUS");

            Id(x => x.nr);

            Map(x => x.betrag);

            Join("BARAUSLANG", m =>
            {
                m.Fetch.Join();

                m.KeyColumn("Ula");
                m.Map(x => x.bezeichnung);
                m.Map(x => x.sprache);
                m.Map(x => x.la);
                this.Where("m.la = 'SPE'");
            });
        }
    }

nr 列是 int 并且 ula 列是字符串,但我需要加入这 2 个。此外,this.where 指的是我猜的外部表,但它应该指的是内部表。

4

1 回答 1

1

也许最好使用单独的实体和单独的映射,而不是像这样构建查询

queryOver<BarausInfo>.JoinQueryOver(x => x.BarauslangObject, barauslangAlias, JoinType.InnerJoin, conjunction)

并且连词将包含ISNUMERIC(tableAColumn1) = 1and tableAColumn2 = 'something'。在 BarausInfo 映射中,您可以指定类似 References(v => v.BarauslangObject).Formula("CONVERT(INT, tableAColumn1) = tableBColumn1") 之类的内容。只需了解如何正确指定公式中的列即可。

于 2012-12-19T15:55:13.193 回答