public void Can_detach() { using (var testData = new NHTestData(NHTestUtil.OrdersDomainFactory.OpenSession())) { Customer customer = null; testData.Batch(action => customer = action.CreateCustomer()); using (var scope = new UnitOfWorkScope()) { var repository = new NHRepository<Customer, int>(); var savedCustomer = repository.Query .Where(x => x.CustomerID == customer.CustomerID) .First(); repository.Detach(savedCustomer); savedCustomer.LastName = "Changed"; //This shouldn't be saved since the savedCustomer instance is detached. scope.Commit(); } testData.Session.Refresh(customer); Assert.AreNotEqual(customer.LastName, "Changed"); } }