Не вкладывайте бизнес-логику в свои сущности.Существуют сущности для сопоставления интерфейса БД с приложением, и, следовательно, на самом деле даже не являются объектами .
Кроме того, использование бизнес-логики в ваших сущностях делает их полными и запутанными.У вас будут некоторые свойства, которые существуют для отображения БД.Другие, которые представляют проблемы времени выполнения.Некоторые методы вы можете вызвать в запросе 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.