Как Правила Busniess вписываются в Entity Framework или сгенерированные Entity Framework? - PullRequest
1 голос
/ 16 ноября 2011

Скажем, я использую традиционное трехслойное приложение (UI-BLL-DAL) в приложении .NET, где будут применяться правила busniess в отношении сгенерированного класса Entity?Вы бы расширили сущность частичным классом и добавили бы туда правила, передали сущность на карту BLL объекту busniess и обработали правила в отдельном классе или что-то совершенно другое?Какая практика была обычной до сих пор?

Спасибо,

1 Ответ

1 голос
/ 16 ноября 2011

Не вкладывайте бизнес-логику в свои сущности.Существуют сущности для сопоставления интерфейса БД с приложением, и, следовательно, на самом деле даже не являются объектами .

Кроме того, использование бизнес-логики в ваших сущностях делает их полными и запутанными.У вас будут некоторые свойства, которые существуют для отображения БД.Другие, которые представляют проблемы времени выполнения.Некоторые методы вы можете вызвать в запросе L2E.Некоторые вы не можете.Это беспорядок.Кроме того, это делает вашу бизнес-логику глубоко связанной в EF-коде, что является плохим разделением интересов.

Мы пишем сервисы для бизнес-процессов.Каждый сервис внедряется в конструктор с репозиториями для данных, которые ему нужны.Бизнес-логика полностью отделена от задачи отображения EF.Это может даже не использовать типы EF.Например, вы можете написать код:

var q = from l in Context.Animals.OfType<Lemur>()
        select new LemurDto
        {
            Id = l.Id,
            IsKing = l.Name.Equals("Julien XIII")
        };
var service = new LemurCountService(q);
return service.Inventory();

Так что в этом случае LemurCountService полностью независим от EF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...