Дизайн бизнес-уровня - Как определить правила - PullRequest
0 голосов
/ 29 октября 2011

Я понимаю, что лучше всего ставить свои бизнес-правила на бизнес-уровне, а доступ к данным - на отдельном уровне доступа к данным, в то время как сущности являются частью вашей модели.

Так, например, я 'Работая с сущностью Customer, определенной в моей модели, я могу выбрать всех клиентов из базы данных через слой доступа к данным.Я также могу добавить нового клиента через DAL.

Однако, прежде чем я добавлю клиента, мне нужно выполнить проверку на нем - так что я предполагаю, что мне нужно определить правила на бизнес-уровне - но я не совсем уверен, как это сделать.

Имеет ли мой бизнес-уровень только методы, которые принимают объекты в качестве параметров?Что-то вроде BLL.Customers.Validate (Клиент Model.Customer)?

Или

Расширяет ли мой бизнес-уровень мои организации?Должен ли я сделать классы сущностей, такие как частичные классы клиентов?так что BLL может расширить их с помощью бизнес-правил?

Я не уверен, как спроектировать бизнес-уровень.

1 Ответ

0 голосов
/ 30 октября 2011

Ваши сущности должны действительно нести все свое собственное деловое поведение, поэтому для самой сущности будет метод Validate.Мне также нравится иметь статический фабричный метод в моих сущностях для создания сущности:

public class Cusotmer
{
    private long? _id;
    private string _name;
    //other attributes...

    public static Customer Create(string name)
    {
        Customer customer = new Customer();
    }

    public void Validate()
    {
        if(_name == null)
            throw new ValidationException("Name has not been set.");
    }
}

Я не уверен, почему вам нужны частичные классы, за исключением, может быть, если вы код, генерирующий ваши сущности из базы данныхвозможно?

...