Я играю с отображением запросов Linq на своих бизнес-объектах в моей базе данных Entity Framework. Кто-нибудь еще спустился по этому пути - или более того, есть ли лучший способ сделать это.Отображение выражений в Linq
То, что я хочу сделать это, чтобы иметь возможность запускать простые запросы к моей бизнес-слой из моего слоя пользовательского интерфейса без добавления дополнительных методов к менеджеру (BL Layer) или Repository (DA Layer)
я получил, что я могу описать проекцию, которую я хочу в слое пользовательского интерфейса, и не нужно создавать отдельный класс или специальный метод в моем менеджере или выполнять дополнительное кодирование на моем уровне DA для эффективного выполнения запроса (в этом случае ключ + агрегированные данные)
var promoSource = new Queryable<BL.Promo>(new PromoQueryProvider());//When executed, Maps a BL Promo code query to an EF.PromoCode query
var query = from x in promoSource
where x.PromoCode != null && x.OrderDate >= startDate && x.OrderDate <= endDate
group x by x.PromoCode
into result
select new
{
PromoCode = result.Key.Trim(),
AverageOrderValue = result.Average(x => x.OrderSubtotal),
NumberOfOrders = result.Count()
};
var results = query.ToList(); //Executes the query in the data layer and passes back the projected data
promosDataView.DataSource = results;
promosDataView.DataBind();
где раньше мне нужно было бы добавить класс для представления вида OBJE ct, метод в Менеджере, чтобы либо построить сводные данные от объектов, , либо переадресовать вызов на уровень данных для извлечения данных из базы данных.
Кажется, что все работает нормально, в ограниченном числе случаев, но я также чувствую, что я пропускаю лодку с точки зрения правильного разделения. Я собираюсь перехитрить в том, чтобы разделить слои для простых сценариев отчетности в приложении для электронной торговли? Разве я не получаю такую же выгоду, если бы я просто использовал EF Datasource на странице aspx?
Проголосовало, чтобы перенести это на StackOverflow. –
Что делает PromoQueryProvider? – kerem