我是Nhibernate的新手。在我的应用程序中,我得到以下异常
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();
}
上述功能在保存日志信息时生成错误。 这个函数将在很长一段时间后调用(例如6到8小时),因为最后检查并执行了很多业务规则,这个方法调用并在mysql数据库表中写入日志信息。
在我调用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>
非常感谢
答案 0 :(得分:1)
当您收到GenericADOException时,表示数据库无法执行提供给它的sql。我使用Nhibernate Profiler来调试这样的事情。它将显示它尝试执行的sql。如果对数据库运行相同的sql代码,通常会得到更详细的异常消息。