Unindo duas tabelas de visualização não relacionadas com nhibernate e ICriteria
Eu tenho duas entidades com base em duas visualizações. Os mapeamentos são assim:
Entiy A:
<class name="SearchView" table="SearchView" dynamic-update="true" mutable="false" schema-action="none">
<id name="Id" type="Guid" column="Id" />
<property name="Id" column="Id" type="Guid" />
<property name="Expires" column="Expires" type="DateTime" />
<property name="VerificationNumber" column="VerificationNumber" type="Int32" />
<property name="InvoiceNo" column="InvoiceNo" type="Int32" length="50" />
<property name="Status" column="FakturaStatus" type="Int32" />
</class>
Entidade B:
<class name="SearchInvoiceResourceLookUpView" table="SearchInvoiceResourceLookUpView" dynamic-update="true" mutable="false" schema-action="none">
<id name="Id" type="Guid" column="Id" />
<property name="InvoiceId" column="InvoiceId" type="Guid" />
<property name="ResourceId" column="ResourceId" type="Guid" />
</class>
Entidade A é baseado em uma visualização de tabela que é uma visualização nivelada de uma estrutura de tabela mais complexa, para otimização de pesquisa. Agora eu quero poder obter todas as linhas deEntidade A onde o ID está na coluna "InvoiceId" emEntidade B para um valor específico de "ResourceId" emEntidade B usando NHibernate e a API de critérios. As duas tabelas são visualizações e não possuem relacionamento declarado. Eu tentei o seguinte código em c #, mas ele não funciona:
var criteria = _session.CreateCriteria(typeof(SearchView));
criteria.CreateAlias("SearchInvoiceResourceLookUpView", "srf",JoinType.InnerJoin)
.Add(Restrictions.EqProperty("sfr.InvoiceId", "Id"))
.Add(Restrictions.Eq("sfr.ResourceId", invoiceResId));
O SQL bruto para esse fim seria:
SELECT * FROM SearchView
JOIN SearchInvoiceResourceLookUpView srf on srf.InvoiceId = Id
WHERE srf.ResourceId = '[Inser resource id here]'
Como eu resolvo isso?
Existe outra maneira melhor de fazer isso?