2009-10-29 93 views
0

如何刷新會話的某些部分而不是其他部分?如何保存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; 

這基本上保存了第一個僱員到數據庫,但沒有第二個。

我試圖支持的場景是當你有一個標籤式的WPF應用程序,同時打開兩個員工並編輯這兩個。

我不能支持兩個會話,因爲我們假設他們之間的交互非常多,以至於如果我對其中的一個進行了更改(例如,員工有ReportTo:以名稱呈現的員工) 。如果我在第二個名稱上更改名稱,我應該在第一個選項卡中看到這個。

回答

1

session.Evict(second)