У меня есть следующий простой сценарий.У меня есть класс Customer, который определен в моем edmx.У меня также есть класс Order, и у клиента может быть ноль или более заказов через его свойство Orders.
Я определил свойство OrderCount в своем классе Customer следующим образом:
public partial class Customer
{
public int OrderCount { get; set; }
}
Iхотел бы легко написать запросы Select, которые загружают значение этого OrderCount соответствующим образом.Я попытался сделать это в классе Customer:
public partial class Customer
{
public int OrderCount { get; set; }
public static Expression<Func<Customer, Customer>> DetailSelector = c =>
{
c.OrderCount = c.Orders.Count;
return c;
};
}
И затем запрос на выборку:
var customersWithOrderCount = ctx.Customers.Select(Customer.DetailSelector);
Однако, таким образом я получаю ошибку, что лямбда с телом оператора можетне быть преобразованным в выражение.Затем я попытался сделать это:
public partial class Customer
{
public int OrderCount { get; set; }
public static Expression<Func<Customer, Customer>> DetailSelector = c => Customer.LoadDetail(c);
public static Customer LoadDetail(Customer customer)
{
customer.OrderCount = customer.Orders.Count;
return customer;
}
}
Но таким образом, когда я выполняю запрос Select, я получаю следующее исключение:
LINQ to Entities does not recognize the method 'Customer LoadDetail(Customer)' method, and this method cannot be translated into a store expression.
Какой самый простой способ сделать это?
ОБНОВЛЕНИЕ: Просто для пояснения, я специально ищу способ сделать это с помощью выражения.Поэтому я не хочу загружать заказы из базы данных, я просто хочу заполнить свойство OrderCount.Спасибо,