在NHIbernate中使用带有公式的属性映射

Bri*_*ian 8 c# nhibernate properties nhibernate-mapping-by-code

我试图将属性映射到另一个表的任意列.文档说公式可以是任意SQL,我看到的例子显示类似.

但是,SQL NHibernate生成的甚至不是有效的.公式中的整个SQL语句被注入SELECT语句的中间.

        Property(x => x.Content, map =>
            {
                map.Column("Content");
                map.Formula("select 'simple stuff' as 'Content'");
            });
Run Code Online (Sandbox Code Playgroud)

Fir*_*iro 10

这是Formula设计的方式,它应该以这种方式工作.您需要将SQL语句包装在parens中,以便生成有效的SQL.

此外,您不能一起指定列和公式.您必须提供整个SQL语句.任何非前缀/转义列(下面示例中的"id")将被视为拥有实体的表的列.

Property(x => x.Content, map =>
{
    map.Formula("(select 'simple stuff' as 'Content')");
});

// or what you probably want

Property(x => x.Content, map =>
{
    map.Formula("(select t.Content FROM AnotherTable t WHERE t.Some_id = id)");
});
Run Code Online (Sandbox Code Playgroud)

  • 就像我在我的回答中所说,所有没有前缀的列都被视为父表的列 (2认同)