Представление EF Core — размещение бизнес-логикиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Представление EF Core — размещение бизнес-логики

Сообщение Anonymous »

Вопрос об EF Core, так как я не понимаю, как правильно выполнить этот сценарий. Это не мой реальный сценарий, а упрощенный пример.
Предположим, у меня есть класс Person, который имеет много приемов пищи.
В классе сущности Person есть свойство LastMealDateTime, которое возвращает дату последнего приема пищи, которую человек ел, с помощью запроса Linq. Это прекрасно работает на уровне бизнес-уровня, и это именно то, что мне нужно.
Скажем, я хочу перечислить все записи Person с указанием последнего приема пищи (возможно, экспорт в файл или сетку...).
Я мог бы загрузить все записи Person и получить свойство LastMealDateTime, но в результате получится N.. . обращается к базе данных, и если есть тысячи записей Person, это приводит к . тысячи дополнительных вызовов.
Решением проблемы с производительностью было бы создание представления в базе данных и непосредственная привязка к нему.
Представьте:

Код: Выделить всё

SELECT
PersonName,
(SELECT TOP 1 MealDateTime
FROM Meal
WHERE Meal.PersonId = Person.Id)
FROM
Person .....
Это здорово, красиво и эффективно, поскольку мы оставляем на усмотрение механизма базы данных всю работу по объединению и т. д.
Но это представление теперь содержит некоторую бизнес-логику (получение последнего приема пищи), которая дублирует свойство LastMealDateTime в классе Person. Я не хочу иметь несколько мест, где мы выполняем эту логику.
Это очень простой пример с очень простой бизнес-логикой, и, честно говоря, я бы, вероятно, позволил чему-то вот так, но если бы логика была намного сложнее, мы бы ее продублировали.
Какие изящные решения придумали люди, чтобы обойти эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ness-logic
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • EF Core View — размещение логики бизнес-логики
    Anonymous » » в форуме C#
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • EF Core View — размещение бизнес-логики
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Размещение логики ввода и логики обработки в C ++ [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Иммерсивная лаборатория — ASP.NET Core API: недостатки бизнес-логики
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как создать несколько бизнес-объектов внутри одного бизнес-объекта в XAF?
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»