Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
        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();
        }