如何刷新会话的某些部分而不是其他部分?
例如:
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的标签中看到这个。
答案 0 :(得分:1)
session.Evict(第二)