如何使用Fluent nhibernate正确更新行
本文关键字:更新 nhibernate 何使用 Fluent | 更新日期: 2023-09-27 18:32:33
我有第二个映射:
public class OrderMap : ClassMap<tOrder>
{
public OrderMap()
{
Table("tOrder");
Id(m => m.Id, "Ref").GeneratedBy.Native();
Map(m => m.OrderNo);
Map(m => m.Taken);
Map(m => m.DateRequired);
Component(x => x.Process, m =>
{
m.Map(x => x.ProcessId);
});
References(x => x.Customer, "CustomerId").ReadOnly();
}
}
当我从数据库中获取数据时工作正常,但是,当我更改某些字段并尝试更新数据库中的数据时,出现错误:批量更新从更新返回意外的行计数; 实际行计数:2; 预期:1(在事务提交时)。
我试图找到答案,我找到的解决方案之一是:
SET NOCOUNT ON;
在触发器中。触发器不是我的,所以我无法更改它,实际上我认为我的映射中缺少一些东西。
如何解决这种错误,我做错了什么?
附言对不起我的英语不好。
如果您正在尝试更新您的实体......但是在"断开连接模式"下进行(根据需要创建ISession..(与持续存在的ISession相反).......那么您可能希望使用 .合并() 方法。
但是你需要弄清楚你是连接还是断开连接......它更改了您将使用的"策略"和代码。
public void UpdateMyNHiberateEntity(MyNHiberateEntity item)
{
using (ISession session = ISessionCreator.OpenSession()) /* You won't have this method probably, but your code will create a new ISession here */
{
using (ITransaction transaction = session.BeginTransaction())
{
session.BeginTransaction();
MyNHiberateEntity mergedItem = session.Merge(item);
transaction.Commit();
}
}
}