Base solution for your next web application
Open Closed

Exeption :A second operation started on this context before #4926


User avatar
0
sago created

i got this error :

A second operation started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe

when this function Executed

public   PagedResultDto<SalesInvoiceListingDto> InvoicesList(FilterDto input)
        {
            try
            {

                var query = from inv in _txSalesInfo.GetAll()
                                //                 .WhereIf(
                                //    !input.Filter.IsNullOrWhiteSpace(),
                                //    u =>
                                //        u.Invoicenumber.Contains(input.Filter) ||
                                //        u.CustomerName.Contains(input.Filter) ||
                                //        u.Refrencenumber.Contains(input.Filter)
                                //)
                            from org in _organizationUnitRepository.GetAll().Where(a => a.Id == inv.SationId)
                                //          .WhereIf(
                                //!input.Filter.IsNullOrWhiteSpace(),
                                //u =>
                                //    u.DisplayName.Contains(input.Filter)
                                //      )
                            from op in _PartyRepo.GetAll().Where(a => a.Id == inv.OperatorId)
                                //               .WhereIf(
                                //!input.Filter.IsNullOrWhiteSpace(),
                                //   u =>
                                //   u.JsonName.Contains(input.Filter)
                                //     )
                            select new { inv, op, org };
                           

                var items =  query
             .OrderByDescending(a => a.inv.InvoiceDate)
             .PageBy(input)
             .ToList();

                var projectedItems = (from a in items
                                      select new SalesInvoiceListingDto
                                      {
                                          Id = a.inv.Id,
                                          CustomerRefrenceNumber = a.inv.CustomerRefrenceNumber,
                                          DueDate = a.inv.DueDate,
                                          InvoiceDate = a.inv.InvoiceDate,
                                          Invoicenumber = a.inv.Invoicenumber,
                                          Refrencenumber = a.inv.Refrencenumber,
                                          StatusId = a.inv.StatusId,
                                          Operator = a.op.JsonName,
                                          Station = a.org.DisplayName,
                                          Customer = a.inv.CustomerName
                                      }).ToList();

              var TotalCount =  query.Count();
           
                return new PagedResultDto<SalesInvoiceListingDto>(
                TotalCount,
                  projectedItems
                   );
            }
            catch (Exception ex)
            {

                return null;
            }
        }

although i replaced all async to sync

Markdown is supported
Copy & paste or drag & drop images (max 30 MB per image)

2 Answer(s)
  • User Avatar
    0
    alper created
    Support Team

    the query looks OK. However the exception is related with ASYNC operation. Be sure you have not any Async keyword in your execution stack.

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    sago created

    it's worked when i replaced (from ) to join :

    public PagedResultDto<SalesInvoiceListingDto> InvoicesList(FilterDto input)
            {
                try
                {
    
                    var query = from inv in _txSalesInfo.GetAll()
                                  .WhereIf(
                     !input.Filter.IsNullOrWhiteSpace(),
                     u =>
                         u.Invoicenumber.Contains(input.Filter) ||
                         u.CustomerName.Contains(input.Filter) ||
                         u.Refrencenumber.Contains(input.Filter))
                                join org in _organizationUnitRepository.GetAll()
                                .WhereIf(
                                !input.Filter.IsNullOrWhiteSpace(),
                                u =>
                                    u.DisplayName.Contains(input.Filter)
                                      )
    
                                on inv.SationId equals org.Id
    
                                join op in _PartyRepo.GetAll()
                                .WhereIf(
                        !input.Filter.IsNullOrWhiteSpace(),
                           u =>
                           u.JsonName.Contains(input.Filter)
                             )
    
                                on inv.OperatorId equals op.Id
    
    
                                select new SalesInvoiceListingDto
                                {
                                    Id = inv.Id,
                                    CustomerRefrenceNumber = inv.CustomerRefrenceNumber,
                                    DueDate = inv.DueDate,
                                    InvoiceDate = inv.InvoiceDate,
                                    Invoicenumber = inv.Invoicenumber,
                                    Refrencenumber = inv.Refrencenumber,
                                    StatusId = inv.StatusId,
                                    Operator = op.JsonName,
                                    Station = org.DisplayName,
                                    Customer = inv.CustomerName
                                };
    
    
                    var desiredItems = query
                    .OrderByDescending(u => u.InvoiceDate)
                    .PageBy(input)
                    .ToList();
                    var TotalCount = query.Count();
    
                    return new PagedResultDto<SalesInvoiceListingDto>(
                    TotalCount,
                      desiredItems
                       );
                }
                catch (Exception ex)
                {
    
                    return null;
                }
            }
    
    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)