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


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.

  • 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;
                }
            }