У меня есть таблица аудита, в которой хранятся строки аудита для длительного процесса на уровне отдельной задачи в SQL Server.
- auditId int,
- TaskName nvarchar (255),
- StartTime datetime,
- EndTime (datetime, null),
- Status (nvarchar (255), null)
Процесс содержит родительский элементи дочерние шаги, и каждый шаг записывается в таблицу аудита.Задача может иметь или не иметь родительский элемент.
например,
auditId, TaskName, StartTime, EndTime, Status
- Parent1, 09: 30:00, 09:40:00, Действительный
- Child1, 09:30:01, 09:35:00, Действительный
- Child2, 09:35:01, 09:40: 00, Действительный
- Parent2, 09:40:01, null, null
- Child3, 09:40:02, null, null
Использование C # 4.0/ LINQ to Entities / LINQ через ObservableCollection Я хотел бы получить сводку аудита из этой таблицы за последние X дней, содержащую общую продолжительность каждого дня по статусу.Я могу поворачивать отдельные записи для генерации сводки, если я могу выяснить, как получить сводные записи аудита.
В сводке аудита должны быть:
- Не должно быть никакого дублирующего аудитав противном случае записи удваивают длительность.
- Необходимо учитывать тот факт, что могут быть задачи, которые все еще выполняются на текущую дату, и возвращать нулевое значение
- Необходимо обрабатывать задержку между окончаниямипредыдущего задания и начало следующего задания.Вероятно, получая продолжительность между началом текущей задачи и началом следующей задачи вместо конца текущей задачи.
- Обработка нуля для последней задачи дня, которая не будет иметь следующего времени начала, если я использую время начала следующей записи, как описано в пункте 3
Такиспользуя приведенный выше пример, итоговые записи будут:
auditId, TaskName, StartTime, EndTime, Status
- Parent1, 09:30:00, 09: 40: 01, Действительный
- Parent2, 09:40:01, null, null
Есть идеи?
Спасибо