如何在NHibernate会话中保存单个实体而不保存其他脏实体?

时间:2009-10-29 15:06:06

标签: c# nhibernate

如何刷新会话的某些部分而不是其他部分?

例如:

ISessionFactory sessionFactory = CreateSessionFactory();
ISession session = sessionFactory.OpenSession();
Employee first = session.Get<Employee>(FirstEmployeeId);
Employee second = session.Get<Employee>(SecondEmployeeId);
first.Name = "Michael Johnson";
second.Name = "Karl Johnson";
session.Flush(first);

发送到数据库:

Update Employee SET FirstName = 'Michael Johnson' where Id = 123;

这基本上会将第一个Employee保存到数据库中,但不会保存到第二个。

我想要支持的方案是当你有一个标签式WPF应用程序,同时打开两个员工并编辑它们。

我不能支持两个会话,因为,比方说,如果我在一个会话中进行更改,我会冒险使用陈旧数据(例如,员工有ReportsTo:Employee作为名称。首先向第二个报告。如果我在Second上更改名称,我应该在First的标签中看到这个。

1 个答案:

答案 0 :(得分:1)

session.Evict(第二)

相关问题