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();
        }
    }
}