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); } } }
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) { } } } }
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); } } }
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); } } }
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); } } }
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); } } }
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(); } } }