NHibernateSessionManager.Instance.GetSessionFrom(SessionFactoryConfigPath).Flush();
我得到了
null id in FoodOrder.Core.Entities.Articles entry (don't flush the Session after an exception occurs)
我可以使用try catch和session.Close或在这个例子中做什么更好?
例如
public void CommitChanges()
{
if (NHibernateSessionManager.Instance.HasOpenTransactionOn(SessionFactoryConfigPath))
{
NHibernateSessionManager.Instance.CommitTransactionOn(SessionFactoryConfigPath);
}
else
{
try
{
// If there's no transaction, just flush the changes
NHibernateSessionManager.Instance.GetSessionFrom(SessionFactoryConfigPath).Flush();
}
finally
{
NHibernateSessionManager.Instance.GetSessionFrom(SessionFactoryConfigPath).Close();
}
}
}
答案 0 :(得分:7)
异常后,您的会话处于无效状态,应该处理掉。这是您应该始终在事务中执行写入的一个原因。如果没有,您不知道数据库的状态。所以我建议:
希望有所帮助。