Click here to Skip to main content
Rate this: bad
Please Sign up or sign in to vote.
See more: C#4.0 NUnit NHibernate
Hello everyone,
I'm seeing some strange behaviour in NHibernate, in particular that ISession.Refresh doesn't always do what it says on the tin when I call it. My code:
public TEntity Refresh(TEntity entity)
   Contract.Requires<ArgumentNullException>(entity != null, "entity");
       //this.Session holds the ISession
       return entity;
   catch (Exception ex)
       throw new RepositoryException("", ex);
Unit test I'm calling it from:
public void ShouldRefresh()
   var customer = new Customer { CustomerId = "ALFKI" };
   customer = this.repository.Refresh(customer);
What's strange is that if I run the unit test by itself, it passes having refreshed all the properties I didn't bother to fill in. If I run the test in a test run after other tests, it fails.
I'm only initialising the ISession once per test run, which seems to be the key here. With a clean ISession it works fine, with one that's already been used for other stuff it fails. As I intend to control the lifecycle of the ISession from a single composition root, reinitialising the ISession isn't an option. Therefore, my question is: how can I get ISession.Refresh to work without reinitialising the ISession?
Posted 24-Feb-12 6:22am
jim lahey24.9K

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 645
1 Maciej Los 225
2 Abhinav S 171
3 Richard Deeming 160
4 Suvendu Shekhar Giri 159
0 Sergey Alexandrovich Kryukov 9,623
1 OriginalGriff 9,135
2 Peter Leow 5,042
3 Kornfeld Eliyahu Peter 3,373
4 Maciej Los 2,581

Advertise | Privacy | Mobile
Web01 | 2.8.150327.1 | Last Updated 24 Feb 2012
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100