public void CoalesceShouldWorkForFutures() { int personId; using (ISession s = OpenSession()) using (ITransaction tx = s.BeginTransaction()) { var p1 = new Person { Name = "inserted name" }; var p2 = new Person { Name = null }; s.Save(p1); s.Save(p2); personId = p2.Id; tx.Commit(); } using (ISession s = OpenSession()) using (s.BeginTransaction()) { var person = s.Query<Person>().Where(p => (p.Name ?? "e") == "e").ToFutureValue(); Assert.AreEqual(personId, person.Value.Id); } using (ISession s = OpenSession()) using (ITransaction tx = s.BeginTransaction()) { s.Delete("from Person"); tx.Commit(); } }
public void CanUseSkipAndFetchManyWithToFuture() { using (var s = sessions.OpenSession()) using (var tx = s.BeginTransaction()) { var p1 = new Person { Name = "Parent" }; var p2 = new Person { Parent = p1, Name = "Child" }; p1.Children.Add(p2); s.Save(p1); s.Save(p2); tx.Commit(); s.Clear(); // we don't want caching } using (var s = sessions.OpenSession()) { IgnoreThisTestIfMultipleQueriesArentSupportedByDriver(); var persons10 = s.Query<Person>() .FetchMany(p => p.Children) .Skip(5) .Take(10) .ToFuture(); var persons5 = s.Query<Person>() .ToFuture(); using (var logSpy = new SqlLogSpy()) { foreach (var person in persons5) { } foreach (var person in persons10) { } var events = logSpy.Appender.GetEvents(); Assert.AreEqual(1, events.Length); } } using (ISession s = OpenSession()) using (ITransaction tx = s.BeginTransaction()) { s.Delete("from Person"); tx.Commit(); } }
private int CreatePerson() { using (var session = sessions.OpenSession()) { var person = new Person(); session.Save(person); session.Flush(); return person.Id; } }
public void CanUseFutureFetchQuery() { IDriver driver = sessions.ConnectionProvider.Driver; if (!driver.SupportsMultipleQueries) { Assert.Ignore("Driver {0} does not support multi-queries", driver.GetType().FullName); } using (var s = sessions.OpenSession()) using (var tx = s.BeginTransaction()) { var p1 = new Person { Name = "Parent" }; var p2 = new Person { Parent = p1, Name = "Child" }; p1.Children.Add(p2); s.Save(p1); s.Save(p2); tx.Commit(); s.Clear(); // we don't want caching } using (var s = sessions.OpenSession()) { IgnoreThisTestIfMultipleQueriesArentSupportedByDriver(); var persons = s.Query<Person>() .FetchMany(p => p.Children) .ToFuture(); var persons10 = s.Query<Person>() .FetchMany(p => p.Children) .Take(10) .ToFuture(); using (var logSpy = new SqlLogSpy()) { Assert.That(persons.Any(x => x.Children.Any()), "No children found"); Assert.That(persons10.Any(x => x.Children.Any()), "No children found"); var events = logSpy.Appender.GetEvents(); Assert.AreEqual(1, events.Length); } } using (var s = OpenSession()) using (var tx = s.BeginTransaction()) { s.Delete("from Person"); tx.Commit(); } }
public void CanCombineSingleFutureValueWithFetchMany() { int personId; using (var s = OpenSession()) using (var tx = s.BeginTransaction()) { var p1 = new Person { Name = "inserted name" }; var p2 = new Person { Name = null }; s.Save(p1); s.Save(p2); personId = p2.Id; tx.Commit(); } using (var s = sessions.OpenSession()) { var meContainer = s.Query<Person>() .Where(x => x.Id == personId) .FetchMany(x => x.Children) .ToFutureValue(); Assert.AreEqual(personId, meContainer.Value.Id); } using (var s = OpenSession()) using (var tx = s.BeginTransaction()) { s.Delete("from Person"); tx.Commit(); } }