public void MainTest() { Key key; using (var session = Domain.OpenSession()) { using (var t = session.OpenTransaction()) { Book book = new Book { Title = "Title", Text = "Text" }; key = book.Key; Session.Current.SaveChanges(); t.Complete(); } } using (var session = Domain.OpenSession()) { using (session.OpenTransaction()) { EntityState state = Session.Current.EntityStateCache[key, true]; Assert.IsNull(state); IndexInfo ii = Domain.Model.Types[typeof(Book)].Indexes.PrimaryIndex; var parameterContext = new ParameterContext(); // Select * CompilableProvider rsMain = ii.GetQuery(); UpdateCache(session, rsMain.GetRecordSetReader(session, parameterContext)); state = Session.Current.EntityStateCache[key, true]; Assert.IsNotNull(state); Assert.IsTrue(state.Tuple.GetFieldState(2).IsAvailable()); Assert.IsTrue(state.Tuple.GetFieldState(3).IsAvailable()); ResetState(state); // Select Id, TypeId, Title CompilableProvider rsTitle = rsMain.Select(0, 1, 2); UpdateCache(session, rsTitle.GetRecordSetReader(session, parameterContext)); state = Session.Current.EntityStateCache[key, true]; Assert.IsNotNull(state); Assert.IsTrue(state.Tuple.GetFieldState(2).IsAvailable()); Assert.IsFalse(state.Tuple.GetFieldState(3).IsAvailable()); ResetState(state); // Select Id, TypeId, Text CompilableProvider rsText = rsMain.Select(0, 1, 3); UpdateCache(session, rsText.GetRecordSetReader(session, parameterContext)); state = Session.Current.EntityStateCache[key, true]; Assert.IsNotNull(state); Assert.IsFalse(state.Tuple.GetFieldState(2).IsAvailable()); Assert.IsTrue(state.Tuple.GetFieldState(3).IsAvailable()); ResetState(state); // Select a.Id, a.TypeId, a.Title, b.Id, b.TypeId, b.Text CompilableProvider rsJoin = rsTitle.Alias("a").Join(rsText.Alias("b"), new Pair <int>(0, 0), new Pair <int>(1, 1)); UpdateCache(session, rsJoin.GetRecordSetReader(session, parameterContext)); state = Session.Current.EntityStateCache[key, true]; Assert.IsNotNull(state); Assert.IsTrue(state.Tuple.GetFieldState(2).IsAvailable()); Assert.IsTrue(state.Tuple.GetFieldState(3).IsAvailable()); ResetState(state); } } }
private void LoadData(Session session) { var customerType = Domain.Model.Types[typeof(Customer)]; var invoiceType = Domain.Model.Types[typeof(Invoice)]; var customerIdColumn = customerType.Fields["CustomerId"].Column.Name; var invoiceCustomerColumn = invoiceType.Fields["Customer"].Fields[0].Column.Name; customerPrimary = customerType.Indexes.PrimaryIndex.GetQuery(); orderPrimary = invoiceType.Indexes.PrimaryIndex.GetQuery(); customerIdIndex = customerPrimary.Header.IndexOf(customerIdColumn); invoiceCustomerIndex = orderPrimary.Header.IndexOf(invoiceCustomerColumn); allCustomers = customerPrimary.GetRecordSetReader(session, new ParameterContext()).ToEntities <Customer>(0).ToList(); allInvoices = orderPrimary.GetRecordSetReader(session, new ParameterContext()).ToEntities <Invoice>(0).ToList(); }