流畅的NHibernate - HasMany映射条件

时间:2011-03-17 15:58:42

标签: nhibernate fluent-nhibernate

我有一个需要条件的HasMany映射。我有这个部分工作,但必须有一个比我正在做的更好的方式。我正在使用的条件需要查看我正在加入的另一个表上的属性。到目前为止我所拥有的是:

    HasMany<MetaData>(x => x.MetaData).Table("MetaData")
        .KeyColumn("DefinitionID")
        .KeyColumn("TableID")
        .Where("metadatade1_.SourceTable = 'Providers'")
        .Cascade.SaveUpdate();

在上面的代码中,where子句引用“metadatade1_”,因为它试图完全限定名称,这就是NH正在生成的名称。我已经尝试过使用“MetaDataDefinitions.SourceTable”(MetaDataDef ...是物理表名称),而且它本身也只是“SourceTable”,但这些都不起作用。

有没有办法不让它尝试并在条件上完全限定名称并只传递“SourceTable ='Providers'”或者有没有办法让它引用生成的名称而不必手动插入它在?

1 个答案:

答案 0 :(得分:3)

简而言之,没有。 Where方法(以及HBM.XML中的where=属性)只接受 raw sql ,因此容易出现您遇到的问题。

您最好的选择是不使用集合,而是依赖查询来检索元数据实例。