【发布时间】:2012-01-11 03:49:28
【问题描述】:
我很难弄清楚 NH 异常:
批量更新从更新返回了意外的行数;实际行 计数:0;预计:1
我的 Dal 代码:
public T Save(T item)
{
using (ISession session = NHibernateHelper.GetSession())
{
using (var transaction = session.BeginTransaction())
{
session.SaveOrUpdate(item);
transaction.Commit();
return item;
}
}
}
我的 log4net 文件:
command 0:UPDATE Metadata_FriendDetails SET UserId = @p0, Email = @p1, 名称 = @p2 WHERE FriendId = @p3;@p0 = a358ab9d-d481-4bdd-8cb2-18ddc8898c70 [类型:Guid (0)],@p1 = '1@hotmail.com' [类型:字符串 (4000)],@p2 = 'myFriend' [类型:字符串 (4000)],@p3 = 2ea35658-edb1-43e3-b848-e1915d1042df [类型:Guid (0)]
2011-12-02 13:06:49,750 [代理:适配器运行线程进行测试 带有 id 的“SaveFriendDetails_Test” '17016e48-1ff4-4dea-8536-6aa3b24e5fb7'] 调试 NHibernate.AdoNet.AbstractBatcher - 关闭 IDbCommand,打开 IDbCommands:0 2011-12-02 13:06:49,751 [代理:适配器运行线程 用 id 测试“SaveFriendDetails_Test” '17016e48-1ff4-4dea-8536-6aa3b24e5fb7'] 错误 NHibernate.Event.Default.AbstractFlushingEventListener - 不能 将数据库状态与会话同步 NHibernate.StaleStateException:批量更新返回意外行 从更新计数;实际行数:0;预计:1
有人发现问题了吗?
TIA
【问题讨论】:
-
我觉得应该用异常写出异常的来源。会更有帮助。
-
有几个可能,您的对象已分离,并且从未在数据库中实际创建,因此没有要更新的原始对象行。或者在您更新之前,表中的某个值发生了变化。我认为这是一个可重复的异常?发布一些关于如何创建、更新和保存对象的代码片段会很有帮助。
-
已添加。我不明白为什么:NHibernate.Event.Default.AbstractFlushingEventListener - 无法将数据库状态与会话 NHibernate 同步
标签: c# sql database nhibernate orm