我想制作将数据库模型映射到视图模型的查询扩展,但我也想将它们重新用于关系模型。
客户实体具有属性
public virtual ICollection<Order> Orders { get; set; }
并且映射是通过查询扩展
完成的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
答案 0 :(得分:0)
如果不需要调用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()
});
}