Click here to Skip to main content
11,797,355 members (80,640 online)
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 5: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 CPallini 475
1 Maciej Los 370
2 OriginalGriff 363
3 Abhinav S 344
4 Andy Lanng 296
0 OriginalGriff 2,092
1 Maciej Los 1,760
2 KrunalRohit 1,436
3 CPallini 1,245
4 ppolymorphe 893

Advertise | Privacy | Mobile
Web03 | 2.8.151002.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