Несколько параллельных операций Исключение выдается при использовании вложенного расширения запроса - PullRequest
0 голосов
/ 20 сентября 2018

Я хотел бы создать Query Extension, который отображает модели базы данных для просмотра моделей, но я также хотел бы повторно использовать их для моделей отношений.

Сущность Customer имеет свойство

public virtual ICollection<Order> Orders { get; set; }

Исопоставление выполняется с помощью Query Extensions

var viewModelList = dbContext.Customers
                .Include(a => a.Orders)
                .ToCustomersModel()
                .ToList();


public static IQueryable<CustomersModel> ToCustomersModel(this IQueryable<Customer> query)
{
    return query.Select(customer => new CustomersModel
                        {
                            Id = customer.Id,
                            Name = customer.Name,
                            Orders = customer.Orders.AsQueryable().ToOrdersModel().ToList()
                        });
}

public static IQueryable<OrdersModel> ToOrdersModel(this IQueryable<Order> query)
{
    return query.Select(customer => new OrdersModel
                        {
                            Id = order.Id,
                            ProductName = order.ProductName
                        });

. Выдает исключение

System.InvalidOperationException: 'Вторая операция началась в этом контексте перед завершением предыдущей операции.Любые члены экземпляра не гарантируют поточно-ориентированность. '

Я использую Entity Framework Core 2.1 и .net Core 2.1

1 Ответ

0 голосов
/ 20 сентября 2018

Что, если вам не нужно вызывать метод Iqueryable

var viewModelList = dbContext.Customers
                .Include(a => a.Orders)
                .ToCustomersModel()
                .ToList();


public static IQueryable<CustomersModel> ToCustomersModel(this IQueryable<Customer> query)
{
    return query.Select(customer => new CustomersModel
                        {
                            Id = customer.Id,
                            Name = customer.Name,
                            Orders = customer.Orders.ToList().Select(customer => new OrdersModel
                                                           {
                                                               Id = order.Id,
                                                               ProductName = order.ProductName
                                                           }).ToList()
                        });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...