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

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

Сообщение Anonymous »

Вопрос о ядре EF, так как я не понимаю, как правильно выполнить этот сценарий. Это не мой реальный сценарий, а упрощенный пример.
Предположим, у меня есть класс с именем «Человек», который имеет много «Питаний».
В классе сущности «Человек» ", существует свойство LastMealDateTime, которое возвращает дату последнего приема пищи, которую человек ел, с помощью запроса Linq. Это прекрасно работает на уровне бизнес-уровня, и это именно то, что мне нужно.
Скажем, я хочу перечислить все записи «Лица» с указанием последнего приема пищи (возможно, экспорт в файл или сетку...).

Я мог бы загрузить все записи «Person» и получить свойство «LastMealDateTime», но это приведет к N... вызовам базы данных, и если это тысячи записей о людях, тогда это приводит к в тысячах дополнительных вызовов.
Решением проблемы с производительностью было бы создание представления в БД и привязка непосредственно к нему. Представьте себе:

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

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 — размещение бизнес-логики
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Размещение логики ввода и логики обработки в C ++ [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • NullPointerException: попытка вызвать виртуальный метод 'android.view.view android.view.view.findviewbyid (int)' на ссыл
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • NullPointerException: попытка вызвать виртуальный метод 'android.view.view android.view.view.findviewbyid (int)' на ссыл
    Anonymous » » в форуме Android
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

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