--
You received this message because you are subscribed to the Google Groups "RavenDB - an awesome database" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ravendb+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ravendb/CAKdJJEzuzC5r0VJsCOXwMWaPpEunAn40ZbpRbowaQ-eR8%2BEeOw%40mail.gmail.com.
Oren Eini CEO / Hibernating Rhinos LTD
|
I'm preparing a repo that i will send soon.
The code is getting Members, in my case it's giving me around 20000.
After, for each one I get CCQLocal9Payment. Some member have like 10-50 payment.
ToStreamedListAsync is an extension method that we use to convert to a list Member and a list of CCQLocal9Payment of the streamed objects. It's equivalent i think to do :
var members = session.Query<Member, MemberSearchIndex>().
Where(x => x.Status == MemberStatus.Active)
.Where(x => x.Tags.ContainsAny(new[] { "Local - 0009" }))
.Where(x => x.SeniorityDate <= parametres.Dateminimum);
var resultsStream = await session.Advanced.StreamAsync(members.ProjectInto<Member>(), default);
while (await resultsStream.MoveNextAsync())
{
allMembers.Add(resultsStream.Current.Document);
}
You can find here ToStreamedListAsync =>
public static async Task<IList<TResult>> ToStreamedListAsync<TResult>(this IQueryable<TResult> query, IAsyncDocumentSession session, CancellationToken cancellationToken)
{
var results = new List<TResult>();
var resultsStream = await session.Advanced.StreamAsync(query.ProjectInto<TResult>(), cancellationToken);
while (await resultsStream.MoveNextAsync())
{
results.Add(resultsStream.Current.Document);
}
return results;
}
public static async Task<IList<TResult>> ToStreamedListAsync<TResult>(this IQueryable<TResult> query, IAsyncDocumentSession session)
{
return await query.ToStreamedListAsync(session, CancellationToken.None);
}
---
IList<Member> allMembers = new List<Member>();
var parametres = this.GetRapportParametres<RapportParametres>();
using (var session = this.documentStore.OpenAsyncSession(this.ParametresExecution.Tenant))
{
var members = session.Query<Member, MemberSearchIndex>().
Where(x => x.Status == MemberStatus.Active)var resultsStream = await subSessionAsync.Advanced.StreamAsync(payments.ProjectInto<Member>(), default);
while (await resultsStream.MoveNextAsync())
{
results.Add(resultsStream.Current.Document);
}
}
var membresAssures = new List<MembresAssures>();
var nowYear = DateTime.Now;
var memberOrderedByLastName = allMembers.OrderBy(f => f.LastName);
var progress = 1;
var total = memberOrderedByLastName.Count();
foreach (var member in memberOrderedByLastName)
{
try
{
DrawProgressBar(progress, total);
progress++;
// nonasync -> no tcpip problem
using (IAsyncDocumentSession subSessionAsync = this.documentStore.OpenAsyncSession(this.ParametresExecution.Tenant))
{
var payments = subSessionAsync
.Query<CCQLocal9Payment, CCQLocal9PaymentsIndex>()
.Where(p => p.MemberId == member.Id && p.Period < nowYear);
var results = new List<CCQLocal9Payment>();
var resultsStream = await subSessionAsync.Advanced.StreamAsync(payments.ProjectInto<CCQLocal9Payment>(), default);
while (await resultsStream.MoveNextAsync())
{
results.Add(resultsStream.Current.Document);
}
}
// nonasync -> no tcpip problem
//using (IDocumentSession session = this.documentStore.OpenSession(this.ParametresExecution.Tenant))
//{
// var payments = session
// .Query<CCQLocal9Payment, CCQLocal9PaymentsIndex>()
// .Where(p => p.MemberId == member.Id && p.Period < nowYear);
// var results = new List<CCQLocal9Payment>();
// var resultsStream = session.Advanced.Stream(payments.ProjectInto<CCQLocal9Payment>());
// while (resultsStream.MoveNext())
// {
// results.Add(resultsStream.Current.Document);
// }
//}
}
catch (Exception e)
{
var objet = new MembresAssures
{
Nas = member.MemberNumber,
Adresse = e.ToString(),
};
membresAssures.Add(objet);
Console.WriteLine(member.MemberNumber + " - error - use non async");
Log.Error(member.MemberNumber + " - error - use non async");
}
}
To view this discussion on the web visit https://groups.google.com/d/msgid/ravendb/CAF0G-ZhMYBB47ZY3E7b9Hr_892CL-6BvsZRzxdN9W9F-3wU2UA%40mail.gmail.com.