C# 如何使用Fluent nhibernate正确更新行?
我有第二个映射:C# 如何使用Fluent nhibernate正确更新行?,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我有第二个映射: 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
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();
}
}
扣动扳机。
触发器不是我的,所以我不能更改它,实际上我认为我的映射中缺少了一些东西
如何解决这种错误?我做错了什么
p.S很抱歉我的英语不好。如果您试图更新您的实体……。但是正在断开连接的模式下进行更新,其中ISession是根据需要创建的。。与具有持续存在的ISession不同……那么您可能需要使用.Merge方法 但是你需要弄清楚你是在连接还是断开连接……这会改变你将要使用的策略和代码
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();
}
}
}
你在坚持你的观点吗。。。或者你是在重新创造它……因为你需要它?这是一个很大的区别。连接和断开之间的区别。。
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();
}
}
}