Это в связи с этим вопрос:Как обычно структурируется BLL (CRUD и бизнес-объект)?
What to put in Business Logic Layer?
С ответами на этот вопрос (еще не выбрали ответ, как там могут быть и другие, желающие комментировать, чтобы сделать его более понятным для меня), я мы пришли к выводу, что BLL будет включать CRUD и будет обращаться к DAL по мере необходимости.
Моя главная проблема теперь в том, как выглядит мой BLL? Скажем, например, объект Order. Для CRUD, я вижу некоторые реализации, что имеет OrderService, которая является частью УСК, как это:
public class OrderService
{
public int CreateOrder(Order order)
{
...
}
public int UpdateOrder(Order order)
{
...
}
//... other code for CRUD
}
Дело с этим в стороне от бизнес-объектов, я бизнес-объектов, связанных с услугами в УСК?
В то время как на некоторых других они делают что-то вроде этого:
public class Order
{
public int ID { get; set; }
public decimal Amount { get; set; }
//... etc.
public int Create()
{
...
}
public int Update()
{
...
}
}
Но это, кажется, как-то неправильно (объединение операций CRUD и свойства).
Как обычно структурируется BLL (CRUD и бизнес-объект)?
Кроме того, поскольку данные, как правило, поступают из ввода пользовательского интерфейса, а затем заполняются объектом Business, как я могу проверить данные? Например, у меня есть свойство Total для заказа и List, Total должно равняться общему количеству OrderItem. Когда я говорю CreateOrder, как бы я вызвал проверку? Я всегда думал, что валидация должна быть сделана внутри реальных агентов по созданию свойств. Как я буду ссылаться на это во время CRUD? Должен ли я реализовать метод Validate в бизнес-объекте?
Любые материалы об этом были бы очень желанными.
CRUD - это термин, который я бы связал с DAL. – BCdotWEB