子查询 nhibernate 条件中的投影 属性
projection property in subquery nhibernate criteria
这是交易,我有 2 个表:
table (A) with columns ( colA_1 | colA_2 | colA_ID ) <br>
table (B) with columns ( colB )
我正在使用 DetachedCriteria.For<AnyEntity>()
查询 SQL。
目的是得到一个 sql 像这样的参议员:
Select A.colA_ID from A
where (CAST(colA_1 AS VARCHAR(10)) + CAST(colA_2 AS VARCHAR(10)))
in (select colB from B)
在此先感谢您的帮助
我强烈建议在您的 A 实体上创建一个特殊的 属性:
public class EntityA
{
...
public virtual string ProjectedKey { get; set; }
}
并使用公式
将其映射为只读
<property name="ProjectedKey"
formula="(CAST(colA_1 AS VARCHAR(10)) + CAST(colA_2 AS VARCHAR(10)))"
insert="false" update="false" />
现在子查询也很容易使用
// subquery to get colB (its id?) from table B
var detachedQuery = DetachedCriteria.For<EntityB>()
.SetProjection(Projections.Id()) // or property representing col B
// use subquery with property represented by formula
var rootQuery = session.CreateCriteria<EntityA>()
.Add(Subqueries.PropertyIn("ProjectedKey", detachedQuery));
这是交易,我有 2 个表:
table (A) with columns ( colA_1 | colA_2 | colA_ID ) <br>
table (B) with columns ( colB )
我正在使用 DetachedCriteria.For<AnyEntity>()
查询 SQL。
目的是得到一个 sql 像这样的参议员:
Select A.colA_ID from A
where (CAST(colA_1 AS VARCHAR(10)) + CAST(colA_2 AS VARCHAR(10)))
in (select colB from B)
在此先感谢您的帮助
我强烈建议在您的 A 实体上创建一个特殊的 属性:
public class EntityA
{
...
public virtual string ProjectedKey { get; set; }
}
并使用公式
将其映射为只读<property name="ProjectedKey"
formula="(CAST(colA_1 AS VARCHAR(10)) + CAST(colA_2 AS VARCHAR(10)))"
insert="false" update="false" />
现在子查询也很容易使用
// subquery to get colB (its id?) from table B
var detachedQuery = DetachedCriteria.For<EntityB>()
.SetProjection(Projections.Id()) // or property representing col B
// use subquery with property represented by formula
var rootQuery = session.CreateCriteria<EntityA>()
.Add(Subqueries.PropertyIn("ProjectedKey", detachedQuery));