хорошо, самый лучший ответ в базе данных,
но вы можете рассмотреть что-то вроде Linq2Sql,
Я имею в виду написать выражение на уровне представления, и оно будет проанализировано как Sql Statement на уровне доступа к данным.
конечно, есть ситуации, когда BLL должен получить некоторые данные из DAL, обработать их и затем вернуть их в DAL.
возьмите пример:
Процедура PutOrder (Стоимость заказа), которая должна проверять наличие заказанного товара.
public void PutOrder(Order _order)
{
foreach (OrderDetail _orderDetail in _order.Details)
{
int count = dalOrder.GetProductCount(_orderDetail.Product.ProductID);
if (count == 0)
throw new Exception (string.Format("Product {0} is not available",_orderDetail.Product.Name));
}
dalOrder.PutOrder(_order);
}
но если вы создаете представление Browse, не рекомендуется (с точки зрения производительности) приносить все данные из Dal и затем выбирать, что отображать в представлении Browse.
может помочь следующее:
public List<Product> SearchProduts(Criteria _criteria)
{
string sql = Parser.Parse(_criteria);
///code to pass the sql statement to Database procedure and get the corresponding data.
}