1

私はLLBLGenを使用していて、次のようなコードがあります。

    if (onlyRecentMessages)
    {
        messageBucket.PredicateExpression.Add(MessageFields.DateEffective >= DateTime.Today.AddDays(-30));
    }

    var messageEntities = new EntityCollection<MessageEntity>();
    using (var myAdapter = PersistenceLayer.GetDataAccessAdapter())
    {
        myAdapter.FetchEntityCollection(messageEntities, messageBucket);
    }

現在、FetchEntityCollection行でSqlExceptionが発生しています。エラーは次のとおりです。System.Data.SqlClient.SqlException:着信表形式データストリーム(TDS)リモートプロシージャコール(RPC)プロトコルストリームが正しくありません。このRPC要求で提供されたパラメーターが多すぎます。最大は2100です。

しかし、それは補足です。私が実際に実行できるようにしたいのは、生成されたSQLをコードのカスタム例外に含めることです。たとえば、次のようなものです。

 using (var myAdapter = PersistenceLayer.GetDataAccessAdapter())
        {
            try
            {
               myAdapter.FetchEntityCollection(messageEntities, messageBucket);
            }
            catch (SqlException ex)
            {
               throw new CustomSqlException(ex, myAdapter.GeneratedSqlFromLastOperation);
            }
        }

もちろん、GeneratedSqlFromLastOperationのようなプロパティはありません。ロギングを構成できることは承知していますが、これらの種類のエラーが発生したときに既存の例外ロギングインフラストラクチャがより多くの情報を提供できるように、情報をスタックトラック/例外に直接保持したいと思います。

ありがとう!スティーブ

4

1 に答える 1

1

説明に完全なクエリを含む ORMQueryExecutionException を取得する必要があります。クエリの execute メソッドは、すべての例外を ORMQueryExecutionException にラップし、クエリを説明に格納します。

ps: 可能であれば、フォーラムで llblgen pro 関連の質問をしてください。私たちはスタックオーバーフローを頻繁に監視していません。ありがとう。:)

于 2011-01-25T07:42:00.827 に答える