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

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

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

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

这是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)"); });