Мне интересно, возможно ли это даже в EF6, vb. net
Моя модель содержит объекты для напоминаний, для одного данного напоминания у меня может быть много объектов / строк в наборе данных, обычно один для каждого типа напоминания, которое было отправлено для этого конкретного события.
Идея моего набора данных будет включать следующее:
| ObjectID (PK) | EventID (FK) | EventType (Enum) | Outcome (Enum) |
| 11111 | 1234 | SMS | Pending |
| 11112 | 1234 | Email | Complete |
| 11113 | 5678 | Email | Complete |
Каждый объект имеет уникальный PK и идентификатор события, который группирует связанные объекты напоминания. Я пытаюсь объединить или сгруппировать элементы по EventID так, чтобы один объект возвращался в пользовательский интерфейс для каждого уникального eventID, возвращая все eventTypes в один объект, который может быть связан сеткой в пользовательском интерфейсе.
Ожидаемый результат:
Row 1: 1234 | SMS Email | Pending Complete|
Row 2: 5678 | Email | Complete |
Итак, я начал пытаться выяснить это в своем запросе:
Dim SomeEvents = (select from db.reminders).GroupBy(Function(g) g.EventID).Select(Function(s)
s.first()).ToEnumerable()
Я могу сгруппировать их по EventID и затем захватить первую строку, но я не могу понять, как получить связанные элементы, возможно ли сделать это из запроса EF и вернуться к анонимному типу?
.Select(Function(s) New With {Key .EventID = s.EventID,
Key .Outcome = "Pending", "Complete" })
Я не могу понять, как вернуть EventTypes или Outcomes как список перечислений / строк / et c в анонимном типе.
Возможно ли это вообще?
Другой подход заключается в создании класса объекта передачи данных, выбирая объекты из модели в новые объекты из DTO и вернуть их в пользовательский интерфейс, это значительно больше работы, и нет никакой бизнес-логики c Я пытаюсь реализовать, просто пытаюсь представить элементы как 1 ряд в отличие от нескольких рядов.