2009-10-29 5 views
0

Comment vidanger certaines parties d'une session mais pas d'autres parties?Comment enregistrer une ou plusieurs entités dans une session NHibernate sans enregistrer d'autres entités incorrectes?

Par exemple:

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

envoie à la base de données:

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

Ce serait essentiellement sauver le premier employé à la base de données, mais pas la seconde.

Le scénario que j'essaie de prendre en charge est lorsque vous avez une application WPF à onglets avec deux employés ouverts à la fois et éditant les deux.

Je ne peux pas prendre en charge deux sessions car, disons, elles interagissent tellement que je risquerais d'avoir des données obsolètes si j'ai apporté des modifications dans une (par exemple, Employés ont ReportsTo: Employé qui rend un nom. Si je change le nom sur Second, je devrais le voir dans l'onglet pour Premier.

Répondre

1

session.Evict (second)

Questions connexes