1

IlSpy で逆コンパイルされたプロジェクトと以下のコードがあります。生の SQL クエリはどこにありますか? criteria.List() はどの select を使用するかをどのように知るのですか?

    protected object ListOne(ISession session, DbBaseArgs args)
    {
            ICriteria criteria = session.CreateCriteria(((DbListArgs)args).DbType);
            criteria.SetMaxResults(1);
            for (int i = 0; i < ((DbListArgs)args).DbExpressions.Count; i++)
            {
                if (((DbListArgs)args).DbExpressions[i] is Order)
                {
                    criteria.AddOrder((Order)((DbListArgs)args).DbExpressions[i]);

                }
                else
                {
                    criteria.Add((ICriterion)((DbListArgs)args).DbExpressions[i]);

                }
            IList results = criteria.List();
            object result;
            if (results != null && results.Count > 0)
            {
                result = results[0];
            }
            else
            {
                result = null;
            }
            return result;
}
4

2 に答える 2

0

逆コンパイルは、生の SQL クエリを見つけるのに役立ちません。デバッグ レベルで指定されたロガーのログを追加してみると NHibernate.SQL、データベースに発行されたクエリが設定されたアペンダーに表示されるはずです。たとえば、次のようなログ構成を追加します。

<logger name="NHibernate.SQL" additivity="false">
    <level value="ALL"/>
    <appender-ref ref="NHibernateSQLFileLog"/>
</logger>
于 2012-11-26T16:01:23.430 に答える