2012-01-25 8 views
0

Nhibernateを初めて使用しています。私のアプリケーションでは、私はNhibernate isession.saveメソッドが汎用例外エラーをスローする

NHibernate.Exceptions.GenericADOException: could not insert: [PAIRAlertAdmin.VO.TriggerLogVO][SQL: INSERT INTO triggerlog (TriggeredUserID, TriggeredDate, TriggeredMode, TriggeredIP, TriggerDescription) VALUES (?, ?, ?, ?, ?)] ---> MySql.Data.MySqlClient.MySqlException: Fatal error encountered during command execution. 

次以下の例外を取得するには、このエラー

public void triggerLog(String logDetail, String AlertMode) 
    { 
     TriggerLogVO triggerLogVO = new TriggerLogVO(); 
     triggerLogVO.TriggeredUserID = Convert.ToInt32(Session["userid"]); 
     triggerLogVO.TriggeredMode = AlertMode; 
     triggerLogVO.TriggeredDate = System.DateTime.Now.ToString(); 
     triggerLogVO.TriggeredIP = BAL.PublicVariablesBAL.RemoteIPAddress; 
     triggerLogVO.TriggerDescription = logDetail.ToString(); ; 
     iSession.Save(triggerLogVO); 
     iSession.Flush(); 
    } 

ログ情報を保存しながら、上記の関数がエラーを生成を生成するコードです。 この関数は、多くのビジネスルールが最後にチェックされて実行され、最後にこのメソッドがmysqlデータベーステーブルにログ情報を呼び出して書き込むため、長い時間(たとえば6〜8時間)後に呼び出されます。

私はcalll iSession.Saveの行で例外をスローします。

ご協力いただきますようお願い申し上げます。

私のマッピングファイルを以下に示します。

<id name="TriggerID" column="ID" type="Int32"> 
    <generator class="native"></generator> 
</id> 

<property name="TriggeredUserID" column="TriggeredUserID" type="Int32"></property> 
<property name="TriggeredDate" column="TriggeredDate" type="string"></property> 
<property name="TriggeredMode" column="TriggeredMode" type="string"></property> 
<property name="TriggeredIP" column="TriggeredIP" type="string"></property> 
<property name="TriggerDescription" column="TriggerDescription" type="string"></property> 

あなたがGenericADOExceptionを取得すると、それはデータベースがにsupplieたSQLを実行することができなかったことを意味し

+0

Nhibernateマッピングも追加できますか – Mharlin

+1

情報が少なすぎます。どこでセッションを開いたり閉じたりしますか?マッピング? – hival

答えて

1

inadvance感謝それ。私はNhibernate Profilerを使ってそれをデバッグします。実行しようとしたSQLが表示されます。あなたのデータベースに対して同じSQLコードを実行する場合、通常、より詳細な例外メッセージが表示されます。

+0

回答がありましたら、 – VijayMathew

+0

お返事ありがとうございます。返信することができます。回答:-) – Mharlin

+1

彼は1人でアップヴォートできません。だから鉱山を取る – gdoron

関連する問題