Nhibernate 探查器显示警告 "Use explicit Save or Update in session"

标签 nhibernate session warnings profiler

我在保存第一次创建的 session 实体时遇到问题...

每个实体都有一个步骤列表,每个步骤都有一个值列表。 (我在映射上使用逆函数)。实体和步骤也引用了数据库中已有的主值。所以有一种新旧对象的混合。

当我执行第一个保存时,我执行了 Session.Save(entity) 并且整个树都保存在数据库中。

问题在于探查器会警告类似的消息

无法确定具有指定标识符 ede6a5ee-b4bd-4f67-9c64-11ef85b7d6ff 的 StepValueEntity 是 transient 的还是分离的;查询数据库。在 session 中使用显式 Save() 或 Update() 来防止这种情况。

因为 nhibernate 在开始真正插入东西之前做了很多更新。

我做错了什么?

我已经尝试过类似迭代每个步骤和值的方法并明确保存它,但同样的事情正在发生。

编辑:

这就是我为身份列做映射的方式,也许这不会给 nhibernate 提供线索来了解什么是新的和已经持久存在的实体,我应该以另一种方式来做。

Id(x => x.Id).Column("GUID_PIPELINE_STEP_PARAMETER").GeneratedBy.Assigned();

问候

最佳答案

也许你忘记了交易,看看: http://nhprof.com/Learn/Alerts/DoNotUseImplicitTransactions

using (var session = sessionFactory.OpenSesion())
using (var tx = session.BeginTransaction())
{
    // perform your insert here
    tx.Commit();
}

关于Nhibernate 探查器显示警告 "Use explicit Save or Update in session",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9755121/

相关文章:

php 警告 fclose() 期望参数 1 是给定的资源 bool 值

c# - NHibernate一对多条件查询

hibernate - 如何在 Nhibernate 中使用 case 和 order by?

Node.js 在数据库中保存 session 时出现错误,Sails.js 使用 sails-mongo 模块?

ruby-on-rails - Rails - 让用户在不破坏 session 的情况下从多个设备登录

mysql - Flask-SQLAlchemy - 即时连接到多个数据库

ios - 警告 : makes integer from pointer without a cast

NHibernate:将子实体投影到父属性中会引发异常

NHibernate 3.2 - 现在所有属性都需要 "set"方法吗?

python - 使用 doctest 测试警告