public void LoadingRemovingAndAddingObjectInUnitOfWorkResultsInObjectBeingSaved()
{
var store = CreateStore();
var user = new User { Id = Guid.NewGuid() };
using (var session = OpenSession(store))
{
session.Save(user.Id, user);
session.SaveChanges();
}
using (var session = OpenSession(store))
{
var uow = new UnitOfWork(new SingleThreadUseGuard());
uow.AddParticipant((IUnitOfWorkParticipant)session);
user = session.Get<User>(user.Id);
session.Delete(user);
User tmpUser;
session.TryGet(user.Id, out tmpUser).Should().Be(false);
session.Save(user);
session.TryGet(user.Id, out tmpUser).Should().Be(true);
session.Delete(user);
session.TryGet(user.Id, out tmpUser).Should().Be(false);
session.Save(user);
session.TryGet(user.Id, out tmpUser).Should().Be(true);
uow.Commit();
}
using (var session = OpenSession(store))
{
session.TryGet(user.Id, out user).Should().Be(true);
}
}