public void ObjectsWhoseKeysDifferOnlyByCaseAreConsideredTheSameObjectForCompatabilityWithSqlServer()
{
var store = CreateStore();
var lowerCase = new Email("theemail");
var upperCase = new Email(lowerCase.TheEmail.ToUpper());
using (var session = OpenSession(store))
{
var uow = new UnitOfWork(new SingleThreadUseGuard());
uow.AddParticipant((IUnitOfWorkParticipant)session);
session.Save(lowerCase.TheEmail, lowerCase);
Assert.Throws<AttemptToSaveAlreadyPersistedValueException>(() => session.Save(upperCase.TheEmail, upperCase));
session.Get<Email>(lowerCase.TheEmail).Should().Be(session.Get<Email>(upperCase.TheEmail));
uow.Commit();
}
using (var session = OpenSession(store))
{
var uow = new UnitOfWork(new SingleThreadUseGuard());
uow.AddParticipant((IUnitOfWorkParticipant)session);
Assert.Throws<AttemptToSaveAlreadyPersistedValueException>(() => session.Save(upperCase.TheEmail, upperCase));
session.Get<Email>(upperCase.TheEmail).TheEmail.Should().Be(lowerCase.TheEmail);
session.Get<Email>(lowerCase.TheEmail).Should().Be(session.Get<Email>(upperCase.TheEmail));
session.Delete<Email>(upperCase.TheEmail);
Assert.Throws<NoSuchDocumentException>(() => session.Delete<Email>(upperCase.TheEmail));
Assert.Throws<NoSuchDocumentException>(() => session.Delete<Email>(lowerCase.TheEmail));
uow.Commit();
}
}