Example #1
0
        public void CanExecuteAllPendingLazyOperations()
        {
            const string COMPANY1_ID = "companies/1";
            const string COMPANY2_ID = "companies/2";

            using (var store = GetDocumentStore())
            {
                using (var commands = store.Commands())
                {
                    commands.Put(COMPANY1_ID, null, new Company {
                        Id = COMPANY1_ID
                    }, null);
                    commands.Put(COMPANY2_ID, null, new Company {
                        Id = COMPANY2_ID
                    }, null);
                }

                using (var session = store.OpenSession())
                {
                    Company company1 = null;
                    Company company2 = null;

                    session.Advanced.Lazily.Load <Company>(COMPANY1_ID, x => company1 = x);
                    session.Advanced.Lazily.Load <Company>(COMPANY2_ID, x => company2 = x);
                    Assert.Null(company1);
                    Assert.Null(company2);

                    session.Advanced.Eagerly.ExecuteAllPendingLazyOperations();
                    Assert.NotNull(company1);
                    Assert.NotNull(company2);
                    Assert.Equal(COMPANY1_ID, company1.Id);
                    Assert.Equal(COMPANY2_ID, company2.Id);
                }
            }
        }
Example #2
0
        public void CanUseMaxNumberOfRequestsPerSession()
        {
            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    session.Advanced.MaxNumberOfRequestsPerSession = 2;

                    var company = new Company();
                    session.Store(company);
                    session.SaveChanges();
                    Assert.Equal(1, session.Advanced.NumberOfRequests);

                    company.Name = "1";
                    session.Store(company);
                    session.SaveChanges();
                    Assert.Equal(2, session.Advanced.NumberOfRequests);

                    try
                    {
                        company.Name = "2";
                        session.Store(company);
                        session.SaveChanges();
                        Assert.False(true, "I expected InvalidOperationException to be thrown here.");
                    }
                    catch (InvalidOperationException)
                    {
                    }
                }
            }
        }
Example #3
0
        public void CanProcessLongQueryString()
        {
            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    var entity1 = new Company {
                        Name = "Async Company #1", Id = "companies/1"
                    };
                    session.Store(entity1);
                    var entity2 = new Company {
                        Name = "Async Company #2", Id = "companies/2"
                    };
                    session.Store(entity2);

                    session.SaveChanges();

                    session.Advanced.DocumentStore.DatabaseCommands.PutIndex("Test", new IndexDefinition
                    {
                        Maps = { "from doc in docs.Companies select new { doc.Name }" }
                    }, true);

                    WaitForIndexing(store);
                }

                var stringBuilder = new StringBuilder();
                var maxLengthOfQueryUsingGetUrl = store.Conventions.MaxLengthOfQueryUsingGetUrl;
                while (stringBuilder.Length < maxLengthOfQueryUsingGetUrl)
                {
                    stringBuilder.Append(@"(Name: ""Async Company #1"") OR");
                }
                stringBuilder.Append(@"(Name: ""Async Company #2"")");
                //const string queryString = @"(((TagID: ""6ba9d9d1\-6b33\-40df\-b0fe\-5091790d9519"") AND (AssociatedTagID: ""0f7e407f\-46c8\-4dcc\-bcae\-512934732af5"")) OR (((TagID: ""bd7ad8b4\-f9df\-4aa0\-9a18\-9517bfd4bd83"") AND (AssociatedTagID: ""0f7e407f\-46c8\-4dcc\-bcae\-512934732af5"")) OR (((TagID: ""d278241e\-d6b2\-4d53\-bf42\-ae2786bb8307"") AND (AssociatedTagID: ""0f7e407f\-46c8\-4dcc\-bcae\-512934732af5"")) OR (((TagID: ""4e470c6a\-b2cc\-47ba\-a8c6\-0e84cc3c2f98"") AND (AssociatedTagID: ""0f7e407f\-46c8\-4dcc\-bcae\-512934732af5"")) OR (((TagID: ""ba59490f\-7003\-463b\-bb3d\-7ffd3f016af9"") AND (AssociatedTagID: ""0f7e407f\-46c8\-4dcc\-bcae\-512934732af5"")) OR (((TagID: ""bd7ad8b4\-f9df\-4aa0\-9a18\-9517bfd4bd83"") AND (AssociatedTagID: ""53cd8b83\-8793\-4328\-a6f3\-d45755275766"")) OR (((TagID: ""bd7ad8b4\-f9df\-4aa0\-9a18\-9517bfd4bd83"") AND (AssociatedTagID: ""6ba9d9d1\-6b33\-40df\-b0fe\-5091790d9519"")) OR (((TagID: ""7227bfa3\-1da2\-48d5\-aefb\-5716fe538173"") AND (AssociatedTagID: ""6ba9d9d1\-6b33\-40df\-b0fe\-5091790d9519"")) OR (((TagID: ""66010435\-60bd\-4cb2\-bbba\-ef262c6f3b40"") AND (AssociatedTagID: ""6ba9d9d1\-6b33\-40df\-b0fe\-5091790d9519"")) OR (((TagID: ""95cda7f6\-181c\-49f7\-809b\-9436011c7f29"") AND (AssociatedTagID: ""6ba9d9d1\-6b33\-40df\-b0fe\-5091790d9519"")) OR (((TagID: ""6ce4f353\-93fa\-452c\-be97\-5c91c5a2a6bb"") AND (AssociatedTagID: ""6ba9d9d1\-6b33\-40df\-b0fe\-5091790d9519"")) OR (((TagID: ""6ba9d9d1\-6b33\-40df\-b0fe\-5091790d9519"") AND (AssociatedTagID: ""4e470c6a\-b2cc\-47ba\-a8c6\-0e84cc3c2f98"")) OR (((TagID: ""bd7ad8b4\-f9df\-4aa0\-9a18\-9517bfd4bd83"") AND (AssociatedTagID: ""4e470c6a\-b2cc\-47ba\-a8c6\-0e84cc3c2f98"")) OR (((TagID: ""d278241e\-d6b2\-4d53\-bf42\-ae2786bb8307"") AND (AssociatedTagID: ""4e470c6a\-b2cc\-47ba\-a8c6\-0e84cc3c2f98"")) OR (((TagID: ""ba59490f\-7003\-463b\-bb3d\-7ffd3f016af9"") AND (AssociatedTagID: ""4e470c6a\-b2cc\-47ba\-a8c6\-0e84cc3c2f98"")) OR (((TagID: ""fb638f78\-686d\-4d81\-b9f6\-332a1c936a36"") AND (AssociatedTagID: ""ba59490f\-7003\-463b\-bb3d\-7ffd3f016af9"")) OR ((TagID: ""bd7ad8b4\-f9df\-4aa0\-9a18\-9517bfd4bd83"") AND (AssociatedTagID: ""ba59490f\-7003\-463b\-bb3d\-7ffd3f016af9""))))))))))))))))))";

                Assert.NotInRange(stringBuilder.Length, 0, store.Conventions.MaxLengthOfQueryUsingGetUrl);
                using (var session = store.OpenSession())
                {
                    var indexQuery = new IndexQuery {
                        Start = 0, PageSize = 50, Query = stringBuilder.ToString()
                    };
                    var queryResult = session.Advanced.DocumentStore.DatabaseCommands.Query("Test", indexQuery);
                    Assert.Equal(2, queryResult.TotalResults);
                }
            }
        }
Example #4
0
        public void CanProcessLongQueryString()
        {
            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    var entity1 = new Company {
                        Name = "Async Company #1", Id = "companies/1"
                    };
                    session.Store(entity1);
                    var entity2 = new Company {
                        Name = "Async Company #2", Id = "companies/2"
                    };
                    session.Store(entity2);

                    session.SaveChanges();

                    store.Maintenance.Send(new PutIndexesOperation(new[] { new IndexDefinition
                                                                           {
                                                                               Maps = { "from doc in docs.Companies select new { doc.Name }" },
                                                                               Name = "Test"
                                                                           } }));

                    WaitForIndexing(store);
                }

                var stringBuilder = new StringBuilder("FROM INDEX 'Test' WHERE");
                while (stringBuilder.Length < 16 * 1024)
                {
                    stringBuilder.Append(@" (Name = 'Async Company #1') OR");
                }
                stringBuilder.Append(@" (Name = 'Async Company #2') LIMIT 50 OFFSET 0");

                var indexQuery = new IndexQuery {
                    Query = stringBuilder.ToString()
                };

                using (var commands = store.Commands())
                {
                    var queryResult = commands.Query(indexQuery);
                    Assert.Equal(2, queryResult.TotalResults);
                }
            }
        }
Example #5
0
        public void CanUseNumberOfRequests()
        {
            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    Assert.Equal(0, session.Advanced.NumberOfRequests);

                    var company = new Company();
                    company.Name = "NumberOfRequestsTest";

                    session.Store(company);
                    session.SaveChanges();
                    Assert.Equal(1, session.Advanced.NumberOfRequests);

                    var company2 = session.Load <Company>(company.Id);
                    company2.Name = "NumberOfRequestsTest2";
                    session.Store(company2);
                    session.SaveChanges();
                    Assert.Equal(2, session.Advanced.NumberOfRequests);
                }
            }
        }
Example #6
0
        public async Task Can_Use_Any_For_A_CollectionQuery_With_An_Id()
        {
            using (var store = GetDocumentStore())
            {
                string companyId;
                using (var session = store.OpenAsyncSession())
                {
                    var company = new Company();
                    await session.StoreAsync(company);

                    await session.StoreAsync(new Order());

                    companyId = company.Id;
                    await session.SaveChangesAsync();
                }

                using (var session = store.OpenAsyncSession())
                {
                    var hasOrder = await session.Query <Order>().AnyAsync(x => x.Id == companyId);

                    Assert.False(hasOrder);
                }
            }
        }
Example #7
0
        public void CanSaveMetadata()
        {
            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    var company = new Company();
                    session.Store(company);

                    var result = session.Advanced.GetMetadataFor(company);
                    result["short"]      = (short)1;
                    result["short-list"] = new List <short> {
                        1
                    };

                    result["ushort"]      = (ushort)1;
                    result["ushort-list"] = new List <ushort> {
                        1
                    };

                    result["int"]      = 1;
                    result["int-list"] = new List <int> {
                        1
                    };

                    result["uint"]      = (uint)1;
                    result["uint-list"] = new List <uint> {
                        1
                    };

                    result["long"]      = (long)1;
                    result["long-list"] = new List <long> {
                        1
                    };

                    result["ulong"]      = (ulong)1;
                    result["ulong-list"] = new List <ulong> {
                        1
                    };

                    result["timespan"]      = TimeSpan.MaxValue;
                    result["timespan-list"] = new List <TimeSpan> {
                        TimeSpan.MaxValue
                    };

                    result["byte"]      = (byte)1;
                    result["byte-list"] = new List <byte> {
                        1
                    };

                    result["sbyte"]      = (sbyte)1;
                    result["sbyte-list"] = new List <sbyte> {
                        1
                    };

                    result["char"]      = (char)1;
                    result["char-list"] = new List <char> {
                        (char)1
                    };

                    result["dictionary"] = new Dictionary <int, int>
                    {
                        { 1, 1 }
                    };

                    result["dictionary"] = new Dictionary <double, int>
                    {
                        { 1.1, 1 }
                    };

                    result["dictionary-class"] = new Dictionary <Company, int>
                    {
                        // will save the class name with the namespace
                        { new Company(), 1 }
                    };
                    session.SaveChanges();
                }
            }
        }