Как Entitiy Framework поддерживает «Производные объекты» и бизнес-правила на концептуальном уровне? - PullRequest
1 голос
/ 10 мая 2011

Говоря «производные объекты», я имею в виду те «доменные объекты», которые нельзя напрямую сопоставить с таблицами БД, но которые все еще существуют «между строками» и могут быть восстановлены с использованием правил агрегирования / ранжирования.

Пример: у меня есть таблица, в которой записи имеют два dateTimes для управления периодом времени.Используя сложное, но все еще естественное правило, основанное на интерпретации объединения этих периодов и некоторых других полей, мы группируем эти записи в Эпизоды .Эти «Эпизоды» или «агрегированные записи» являются довольно популярными объектами в моем домене, поэтому я ищу способ гибкой организации кода.

Что мне может предложить Entity Framework?Могу ли я как-то объявить эти «Эпизоды» на концептуальной модели?Или с точки зрения инструмента ORM эти «доменные объекты» всегда являются «еще одним запросом»?

Теперь я создаю эти Eisodes , используя типы «ad hoc» с выражением linq и «foreach»."цикл (чтобы получить агрегированные значения).Я называю этот код «бизнес-правилом», но без «декларации» на концептуальном уровне это «бизнес-правило» является просто «кодом» :)

PS Было бы лучше иметь эти эпизоды вБД но сейчас это невозможно ... PPS Entity Framework 4.1

1 Ответ

1 голос
/ 10 мая 2011

Можно подумать об этом, если у вас есть непостоянный доменный объект с именем Эпизод , который объединяет сущности, которые сохраняются.Объекты, являющиеся частью вашей модели (те, которые сохраняются) являются «членами» Эпизода, основанного на логике, относящейся к полям меток времени.

Один из подходов состоит в определении класса Эпизода, который объединяет эти объекты модели,Класс Episode не должен знать о постоянстве объектов модели - на самом деле, шаблон POCO удаляет осведомленность о постоянстве и из объектов сохраняемой модели.

Стратегия «назначения» модельного объекта в Эпизод будет зависеть от используемой логики.Вы можете добавить статический метод в класс Episode, который принимает объект модели в качестве параметра.Затем этот метод может применять логику назначения, создавать новые эпизоды и назначать им объекты модели в зависимости от ситуации.

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