Лучший способ получить данные только для чтения с помощью EF и поддерживать спортивные / поиск / фильтрацию - PullRequest
0 голосов
/ 05 марта 2011

Допустим, мне нужно выполнить этот запрос с EF на бизнес-уровне

var list = context.Invoices.Select(x => new
{
    InvoiceNumber = x.InvoiceNUmber,
    InvoiceDate = x.InvoiceDate,
    CustomerName = x.Customer.CustomerName,
    TotalValue = x.InvoiceData.Sum(y => y.Quantity * y.Price),
    Id = x.Id
}).ToList();

Что я могу сделать, чтобы этот список был легко сортируемым, доступным для поиска или фильтруемым в слое пользовательского интерфейса?

Спасибо, Goran

1 Ответ

1 голос
/ 05 марта 2011

Способ сделать это - вернуть объект, который не является анонимным. То есть создайте класс для хранения этих данных. Он должен иметь либо неявный конструктор с нулевым аргументом (потому что у вас нет конструкторов), либо явный конструктор с нулевым аргументом (потому что вы определили другие конструкторы). Тогда вы можете сказать:

List<MyObject> list = context.Invoices.Select(x => new MyObject()
{
    InvoiceNumber = x.InvoiceNUmber,
    InvoiceDate = x.InvoiceDate,
    CustomerName = x.Customer.CustomerName,
    TotalValue = x.InvoiceData.Sum(y => y.Quantity * y.Price),
    Id = x.Id
}).ToList();

Теперь вы можете вернуть строго типизированный список объектов из вашего бизнес-уровня, и ваш уровень пользовательского интерфейса может использовать LINQ (или любой другой) для сортировки / фильтрации / подкачки страниц.

...