Как сохранить одну сущность или сущности в пределах сеанса NHibernate без сохранения других грязных сущностей? - PullRequest
0 голосов
/ 29 октября 2009

Как очистить определенные части сеанса, но не другие части?

Например:

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 с вкладками, в котором одновременно работают два сотрудника и редактируют обоих.

Я не могу поддерживать два сеанса, потому что, скажем, они так сильно взаимодействуют, что я рискну получить устаревшие данные, если внесу изменения в один (например, у Employees есть ReportsTo: Employee, который отображает как Имя. Первый сообщает Second. Если я поменяю имя на Second, я должен увидеть это на вкладке First.

1 Ответ

1 голос
/ 29 октября 2009

session.Evict (второй)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...