Вторая операция началась в этом контексте до завершения предыдущей операции. Любые члены экземпляра не гарантированно являются потокобезопасными
Здравствуйте, я получаю эту ошибку, когда я получаю доступ к одному и тому же методу общего хранилища дважды в одном методе.
var polyTables = _vehicleService.GetAll().ToList()
.Select(p => new PolyTable
{
VinNumber = p.ChassisNumber ?? "-",
BrandName = p.BrandName,
FirstRegisterDate = p.FirstRegistrationDate,
ModelCode = p.ModelCode,
Plate = p.Plate ?? "-",
CreatedBy = 1,
IsActive = true,
AuthorizedServiceId = p.AuthorizedServiceId,
Customer = GetLastCustomerName(p.Id, periodicCodes)
}).ToList();
private string GetLastCustomerName(string vehicleId,IEnumerable<PeriodicCode> periodicCodes)
{
var invoices = _invoiceService.GetByVehicle(vehicleId);
var lastInvoiceLine = _invoiceLineService.GetLastInvoiceLineByInvoices(invoices, periodicCodes);
var customer =new Customer();
if (lastInvoiceLine != null )
customer = _customerService.GetById(lastInvoiceLine.CustomerNumber);
return customer.Name + " " + customer.SurName;
}
Heres me Универсальный метод репозитория
public IEnumerable<T> Find(Expression<Func<T, bool>> predicate, params Expression<Func<T, object>>[] includes)
{
if (includes == null)
return Context.Set<T>().Where(predicate);
else
return includes.Aggregate(Context.Set<T>().Where(predicate).AsQueryable(), (current, includeProperty) => current.Include(includeProperty));
}
Вот метод GetByVehicle
public IEnumerable<Invoice> GetByVehicle(string vehicleId) =>
_genericRepository.Find(s => s.VehicleId == vehicleId);
1 ответ
Решение
Я исправил это, изменив IEnumerable к списку здесь
public InvoiceLine GetLastInvoiceLineByInvoices(List<Invoice> invoices, List<InvoiceLine> invoiceLine)
{
if (invoices != null)
{
return invoiceLine.Where(s => s.WorkmanshipId != null && invoices.Select(p=> p.Id).Contains(s.InvoiceId) ).OrderByDescending(s=> s.InvoiceDate).FirstOrDefault();
}
return null;
}
Комментарий Мартенса очень помог.