第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

NHibernate 中具有多列的 IN 子句映射

NHibernate 中具有多列的 IN 子句映射

C#
繁花不似錦 2023-07-22 16:24:47
我正在嘗試為以下內(nèi)容編寫 Nhibernate ICriteria。SELECT *  FROM foo  WHERE    (fooKeyColumn1, fooKeyColumn2) IN (     SELECT barKeyColumn1, barKeyColumn2      FROM bar     WHERE <some conditions>)如果我需要檢查一列的 IN,那么我可以使用Subqueries.PropertyIn(propertyName,detachedCriteria);但如果我想檢查上面 sql 示例中給出的多個屬性的相同屬性,就會遇到麻煩。任何 NHibernate 專家可以指導(dǎo)我完成這個任務(wù)嗎?我想將此子查詢映射到使用 ICriteria 作為關(guān)鍵組件開發(fā)的現(xiàn)有模塊中。
查看完整描述

1 回答

?
茅侃侃

TA貢獻1842條經(jīng)驗 獲得超21個贊

您需要自定義實現(xiàn)SubqueryExpression來實現(xiàn)它:


/// <summary>

/// A comparison between multiple properties in the outer query and the

///  result of a subquery

/// Note: DB support of row value constructor is required

/// </summary>

[Serializable]

public class MultiPropertiesSubqueryExpression : SubqueryExpression

{

    private readonly string[] _propertyNames;


    public MultiPropertiesSubqueryExpression(string[] propertyNames, string op, DetachedCriteria dc)

        : base(op, null, dc)

    {

        _propertyNames = propertyNames;

    }


    protected override SqlString ToLeftSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)

    {

        return new SqlString("(", string.Join(", ", _propertyNames.Select(pn => criteriaQuery.GetColumns(criteria, pn)).SelectMany(x => x)), ")");

    }

}


以及用法示例:


DetachedCriteria detachedCriteria = DetachedCriteria.For(typeof(Bar))

    //.Add(...) //Add some conditions

    .SetProjection(Projections.ProjectionList().Add(Property.ForName("Prop1")).Add(Property.ForName("Prop2")));


var result = session.CreateCriteria(typeof(Foo))

                    .Add(new MultiPropertiesSubqueryExpression(new[] {"Prop1", "Prop2"}, "in", detachedCriteria))

                    .List<Foo>();


查看完整回答
反對 回復(fù) 2023-07-22
  • 1 回答
  • 0 關(guān)注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號