NHibernate简单更新错误:查询处理器在查询优化期间用完了堆栈空间。请简化查询

时间:2018-07-19 11:33:41

标签: c# sql-server nhibernate fluent-nhibernate

我正在尝试更新对象上的外键引用,然后使用NHibernate保存它。要更新的代码如下:

try
{
    var entity = await _session.Query<TObj>().Where(expression).FirstOrDefaultAsync().ConfigureAwait(false);
    _mapper.Map(obj, entity);
    entity.LastModifiedDate = DateTime.Now;
    await _session.FlushAsync().ConfigureAwait(false);
    await transaction.CommitAsync().ConfigureAwait(false);
}
finally
{
    transaction.Dispose();
}

生成的SQL如下所示:

UPDATE sr.[servicerequest]
SET    lastmodifieddate = ?,
       isactive = ?,
       creationdateutc = ?,
       externalreference = ?,
       sourcetype = ?,
       creator_id = ?,
       country_id = ?,
       customer_id = ?,
       serviceline_id = ?,
       pim_id = ?,
       team_id = ?,
       contactinformation_id = ?,
       servicerequestscenario_id = ?
WHERE  id = ?  

我可以在SSMS中执行它而没有任何问题。但是,当运行commitasync方法时,我得到了NHibernate.Exceptions.GenericADOException说:

  

查询处理器在查询优化期间耗尽了堆栈空间。请简化查询。

我不明白,怎么能比简单的更新语句更简化呢?在NHibernate上失败时,为什么我可以在SSMS中执行它而没有任何问题?

0 个答案:

没有答案